TGViewer
Flutter | Mahmoud Azab Flutter | Mahmoud Azab @flutter_apps99 · 9.41K subscribers
Post #1907 3.52K
يسعد أوقاتكم بكل الخير, بدايةً قبل قراءتك للمنشور علّق بالصلاة على النبي, ثم أكمل قراءة.

التحديثات الجديدة الخاصة بالدارت وفلاتر دسمة جدًا وكثيرة ولا يمكن إجمالها بمنشور, لذلك اليوم سنتحدث عن تحديثات الدارت فقط.

جديد لغة دارت 3.0
أولًا:
Dart Portability:
أصبح بالإمكان ترجمة أكواد dart للعمل على بيئتين جديدتين:
1. Linux RISC-V
2. WebAssembly
وحنتكلم عن الWebAssembly (WASM).
زي ما أنتوا عارفين المشاريع المكتوبة بفلاتر يمكن ترجمتها للعمل على بيئات متعددة, وكذلك يمكن إنشاء تطبيق ويب منها.

دارت يترجم أكواده لما يقابله بالjs كون المتصفحات تتعامل مع الجافاسكريبت (وليس الدارت).

الجديد هنا أنه أصبح بالإمكان تحويل المشروع ل WebAssembly للحصول على أداء أسرع وثقل أقل على الرام.

ثانيًا: Patterns
المقصود بها طرق كتابة أكوادك بشكل أكثر تعبيرًا.

تحديث 1: multiple returns
ويقصد بها أن تعيد أكثر من ناتج للميثود. (بديل الtuple).
لو افترضنا أنك تريد إرجاع بيانات سيارة من ميثود ما (الاسم وسنة الانتاج),
الطريقة الأولى والقديمة أنك تعمل class, وتعرف فيه الاسم وسنة الانتاج, ثم تنشء منه object وتسند له القيم وترجعه للميثود.
class Car{
final String name;
final int year;
Car(this.name,this.year);
}

Car someMethod(String name){
var car = Car(name,2013);
return car;
}

void main(){
var car = someMethod('skoda');
print('${car.name} ${car.year}');
}

الجديد الآن تستطيع إرجاع أكثر من قيمة معًا.
بديل الكود السابق بنفس الناتج:

(String,int) someMethod(String name){
return (name,2013);
}

void main(){
var car = someMethod('skoda');
print('${car.$1} ${car.$2}');
}

أو

void main(){
var (name,year) = someMethod('skoda');
print('$name $year');
}

تحديث 2:
بالإصدارات السابقة كنا نستخدم الif/else في تخصيص List وقت كتابة الكود.
الآن أصبح استخدام if/else على الnamed arguments بنفس الطريقة.
مثال:
ListTile(
title:Text('Some list tile'),
if(enableSubtitle)
...(subTitle:Text('Some subtitle')));

تحديث 3:
الswitch/case كانت تتطلب أمرين:
الأول أنك تمرر constants لcases
الثاني أنك تنهي كل case ب break;

الأمر الأول, أصبحت الcase أكثر مرونة,
مثلًا:
void someMethod(){
switch(something){
case condition1:
..
case condition2:
...
case condition3 when condition 4:
...
default:
...
}
}

الأمر الثاني, بالنسبة لجملة break; سيتم الاستغناء عنها نهاية الcase. لأنها فعليًا بدون معنى ولا قيمة (بس هما ضافوها من باب هذا ما وجدنا عليه آباؤنا).

الأمر الثالث:
بالإمكان دمج أكثر من case بنفس الcase بدلًا من أسطر متتابعة:
مثلًا
switch(someThing){
case condition1:
case condition2:
case condition3:
//your code
}

يمكن كتابتها كذلك:

switch(someThing){
case condition1 condition2 condition3:
//your code
}
مثل ما أشرنا بالأعلى أصبحت مرنة ولا تتطلب وسيطات ثابتة.

الأمر الرابع:
بالإمكان استخدام معاملات المقارنة مباشرة بدون الإشارة كل مرة للمتغير اللي داخل switch:
مثلًا:
switch(age){
case age<5:
...
case age>5 && age <10:
...
}

صار ممكن اختصارها كالتالي:
switch(age){
case <5:
...
case >5 && <10:
...
}

تحديث 4:
تفنيط (فكفكة الjson) والتعامل معه - json
destructuring
لاحظ هالمثال:
var json = {'car':['skoda',2013]};

switch(json){
case {'user':[String name,int year]}:
print('The car $name made in $year');
default:
print('Unkown json pattern');
}

تحديث 5:
تفنيط الObject والتعامل معه: Object destructuring
لاحظ هالمثال:
var cars = {'Skoda':2013, 'Kia':2019};
for(var MapEntry(:name,:year) in cars.entries)
{
print('$name made in $year');
}

هذا جزء من التحديثات المعلنة علمًا بأن النسخة 3.0 من الدارت لم تنزل stable بل ما زالت في dev channel.

بالتوفيق لكم, ولا تنسى تعلّق بالصلاة على النبي - صلى الله عليه وسلم-.

#flutter_forward
#dart_updates
#منقول
  • ❤ 25
  • 👍 10
  • 🔥 1
More from @flutter_apps99
  1. Oct 6, 2026لو حد عمل تطبيق ديني قبل كده يقول هل لقى خط كويس عشان الهمزات ف معظم الخطوط بتكون بالشكل د…
  2. Oct 4, 2026السلام عليكم ورحمة الله وبركاته اللى عايزك يشارك فى الأجر ممكن يجرب التطبيق ولو فيه مشاكل…
  3. Sep 27, 2026No PNGs. No SVGs. No Lottie files. Our Maab onboarding is pure canvas , built with CustomP…
  4. Sep 22, 2026Splash screen for مآب | Maab — a fully custom animated Quran experience built from scratch…
  5. Sep 2, 2026https://azabcodes-portfolio.web.app/
  6. Aug 6, 2026🚀 ارتقِ بتجربة تحديث تطبيقك مع "app_upgrade_checker"! دعم 7 لغات، وإمكانية جلب أحدث الإصد…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →