قائمة مصطلحات Flutter (Dart)
وصف بعض المفاهيم الأساسية في لغة Dart
هنا قائمة مصطلحات Flutter (Dart) تحتوي على الأوامر والأوصاف اللغوية الأكثر فائدة:
الصورة أعلاه هي صورة مُولدة بواسطة الذكاء الاصطناعي (باستخدام نموذج Flux 1 dev) تُظهر المطور يعزف على الناي ويقوم برمي السهام.
أوامر Flutter CLI
إنشاء مشروع Flutter جديد:
flutter create <project_name>
تشغيل تطبيق Flutter:
flutter run
بناء APK نسخة إصدار:
flutter build apk
تحليل الكود Dart:
flutter analyze
تشغيل الاختبارات:
flutter test
الحصول على المكتبات:
flutter pub get
تحديث Flutter:
flutter upgrade
التحقق من تثبيت Flutter:
flutter doctor
بنى لغة Dart
المتغيرات وأنواع البيانات:
int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Can be any type';
final constantVar = 'Cannot be reassigned';
const compiletimeConstant = 'Compile-time constant';
السلامة من القيم الفارغة:
String? nullableString;
String nonNullableString = 'Hello';
الوظائف:
void simplePrint() {
print('Hello');
}
int add(int a, int b) => a + b;
void namedParams({required String name, int? age}) {
// جسم الدالة
}
void optionalParams(String name, [int? age]) {
// جسم الدالة
}
التدفق الشرطي:
if (condition) {
// الكود
} else if (anotherCondition) {
// الكود
} else {
// الكود
}
for (var i = 0; i < 5; i++) {
// الكود
}
while (condition) {
// الكود
}
switch (variable) {
case value1:
// الكود
break;
default:
// الكود
}
القوائم والخرائط:
List<int> numbers = [1, 2, 3];
Map<String, int> ages = {'Alice': 30, 'Bob': 25};
الصفات:
class Person {
String name;
int age;
Person(this.name, this.age);
void sayHello() {
print('Hello, I am $name');
}
}
البرمجة غير المتزامنة:
Future<void> fetchData() async {
try {
var result = await someAsyncOperation();
print(result);
} catch (e) {
print('Error: $e');
}
}
التدفقات:
Stream<int> countStream(int max) async* {
for (int i = 0; i < max; i++) {
yield i;
}
}
إدارة الأخطاء:
try {
// الكود الذي قد يسبب استثناء
} on SpecificException {
// معالجة الاستثناء المحدد
} catch (e) {
// معالجة أي استثناء
} finally {
// يتم تنفيذه دائمًا
}
تغطي هذه القائمة أهم أوامر Flutter ومكونات لغة Dart، وتقدم مرجعًا سريعًا للمطورين في Flutter.
السلامة من القيم الفارغة في Flutter / Dart
التعامل مع السلامة من القيم الفارغة في Dart لتطبيقات Flutter أمر حيوي لكتابة كود قوي خالي من الأخطاء. إليك دليل بسيط حول كيفية التعامل مع السلامة من القيم الفارغة:
إعلان المتغيرات
المتغيرات غير القابلة للفراغ:
int age = 30;
String name = 'John';
المتغيرات القابلة للفراغ:
int? nullableAge;
String? nullableName;
التعامل مع أنواع القابلة للفراغ
العمليات الخاصة بالقيم الفارغة:
- مُشغل الوصول المدرك للفراغ (?.)
String? name;
print(name?.length); // الوصول الآمن إلى الطول إذا لم يكن الاسم فارغًا
- مُشغل التجميع (??)
String? name;
String displayName = name ?? 'Guest';
- مُشغل التعيين المدرك للفراغ (??=)
String? name;
name ??= 'John'; // تعيين 'John' إذا كان الاسم فارغًا
مُشغل التأكيد ( ! ) استخدم هذا المُشغل بحذر، لأنه يمكن أن يؤدي إلى أخطاء في وقت التشغيل إذا كانت القيمة فارغة:
String? nullableName = 'John';
String nonNullableName = nullableName!;
تحليل التدفق
يُساعد تحليل التدفق في Dart على تحديد متى يمكن استخدام متغير قابل للفراغ آمنًا:
String? getName() => 'John';
void printName() {
String? name = getName();
if (name != null) {
print(name.length); // آمن استخدام الاسم هنا
}
}
المتغيرات المتأخرة
استخدم late
للمتغيرات غير القابلة للفراغ التي يتم تهيئتها بعد الإعلان:
late String lateInitializedName;
void initializeName() {
lateInitializedName = 'John';
}
التعامل مع المعلمات القابلة للفراغ
void greet(String name, {String? title}) {
if (title != null) {
print('Hello, $title $name');
} else {
print('Hello, $name');
}
}
التعامل مع المجموعات
القوائم القابلة للفراغ:
List<String>? nullableList;
List<String?> listOfNullableStrings = ['Hello', null, 'World'];
فلترة القيم الفارغة:
List<String?> mixedList = ['a', null, 'b', null, 'c'];
List<String> nonNullList = mixedList.whereType<String>().toList();
باستخدام هذه الممارسات، يمكنك التعامل بشكل فعال مع السلامة من القيم الفارغة في تطبيقاتك Dart وFlutter، مما يقلل من خطر الأخطاء المرتبطة بالقيم الفارغة ويحسن جودة الكود بشكل عام.