۱۰ قابلیت Dart که هر برنامه‌نویس فلاتر باید بشناسد

Dart در سال‌های اخیر خیلی قدرتمندتر شده است. این ده قابلیت، از null safety و async/await تا records و pattern matching، کد فلاتر شما را کوتاه‌تر، امن‌تر و خواناتر می‌کند.

۳ دقیقه مطالعه
۱۰ قابلیت Dart که هر برنامه‌نویس فلاتر باید بشناسد

Dart زبان فلاتر است و نسخه‌های اخیرش قابلیت‌هایی دارد که اگر بلد باشید، کد فلاتر شما کوتاه‌تر، امن‌تر و خواناتر می‌شود. این ده قابلیت را حتماً بشناسید.

#۱. Null safety

در Dart هیچ متغیری به‌طور پیش‌فرض نمی‌تواند null باشد. اگر null لازم است، صریحاً با ? اعلامش می‌کنید و کامپایلر شما را مجبور می‌کند حالت null را مدیریت کنید:

String? name;
print(name?.length ?? 0); // safe call + default value

#۲. async / await و Future

عملیات زمان‌بر مثل درخواست شبکه، با Future و await شبیه کد معمولی نوشته می‌شود:

Future<String> loadTitle() async {
  final response = await fetchFromServer();
  return response.title;
}

#۳. Stream

Stream دنباله‌ای از مقادیر در طول زمان است (مثل پیام‌های یک چت). با await for یا ویجت StreamBuilder مصرفش می‌کنید.

#۴. پارامترهای نام‌دار و required

class User {
  final String name;
  final int age;
  const User({required this.name, this.age = 18});
}

خوانایی هنگام ساخت شیء خیلی بالاتر می‌رود: User(name: 'علی').

#۵. Extension method

می‌توانید به کلاس‌های موجود متد اضافه کنید، بدون ارث‌بری:

extension Greeting on String {
  String get shout => '${toUpperCase()}!';
}
print('hi'.shout); // HI!

#۶. collection if / for و spread

برای ساخت لیست‌های شرطی داخل رابط کاربری عالی است:

final items = [
  'خانه',
  if (isLoggedIn) 'حساب من',
  ...extraItems,
];

#۷. Records

بدون ساخت کلاس، چند مقدار را با هم برگردانید:

(String, int) nameAndAge() => ('سارا', 28);
final (name, age) = nameAndAge();

#۸. Pattern matching و switch expression

String label(int score) => switch (score) {
  >= 90 => 'عالی',
  >= 70 => 'خوب',
  _ => 'تلاش بیشتر',
};

#۹. Sealed class

برای مدل‌کردن «چند حالت ممکن» (مثل loading / data / error) ایده‌آل است، چون کامپایلر کامل‌بودن switch را چک می‌کند:

sealed class UiState {}
class Loading extends UiState {}
class Data extends UiState { final String text; Data(this.text); }
class Failure extends UiState { final String message; Failure(this.message); }

#۱۰. Cascade operator

برای چند عملیات پشت‌سرهم روی یک شیء:

final paint = Paint()
  ..color = Colors.blue
  ..strokeWidth = 4
  ..style = PaintingStyle.stroke;

#جمع‌بندی

لازم نیست همه را یک‌جا یاد بگیرید. با null safety و async/await شروع کنید، بعد sealed class و pattern matching را برای مدیریت وضعیت رابط کاربری یاد بگیرید. همین‌ها تفاوت کد «کار می‌کند» با کد «حرفه‌ای» هستند.

فلاتر را حرفه‌ای و پروژه‌محور یاد بگیر

دوره‌ی VIP فست فلاتر از صفر تا انتشار اپلیکیشن، با پشتیبانی مستقیم مدرس.

مشاهده‌ی دوره‌ی VIP