في هذه المقالة سنتعرف على تمارين Null Safety في لغة Dart. سنقوم بتناول عدة مسائل وتطبيقات تساعدنا على فهم واستخدام Null Safety في Dart. سنقوم بتقسيم المقال إلى عناوين فرعية تحتوي على شروحات وأمثلة توضيحية للأكواد.
مثال 1: Null Safety In Dart
في هذا التمرين، سنقوم بتعريف متغير يسمى age ونعين له قيمة null باستخدام عامل التصريح عن القيمة الفارغة (?).
الكود:
void main() { int? age; age = null; print("Age is $age"); }
نتيجة الكود:
Age is null
مثال 2: Nullable Type Parameter For Generics
في هذا التمرين، سنقوم باستخدام عامل التصريح عن القيمة الفارغة (?) لجعل نوع المعامل في قائمة nullable.
الكود:
void main() { List<int?> items = [1, 2, null, 4]; print(items); }
نتيجة الكود:
[1, 2, null, 4]
مثال 3: Null Safety In Dart
في هذا التمرين، سنستخدم عامل التأكيد على عدم القيمة الفارغة (!) لطباعة قيمة null إذا كان المتغير فارغًا.
الكود:
void main() { String? name; name = null; String? name1 = name; print(name1); }
نتيجة الكود:
null
مثال 4: Null Assertion Operator (!) For Generics
في هذا التمرين، سنستخدم عامل التأكيد على عدم القيمة الفارغة (!) لطباعة قيمة null إذا كان المتغير فارغًا.
الكود:
void main() { List<int?> items = [1, 2, null, 4]; int firstItem = items.first!; print(firstItem); }
نتيجة الكود:
1
مثال 5: Null Assertion Operator (!) For Generics
في هذا التمرين، سنستخدم عامل التأكيد على عدم القيمة الفارغة (!) لطباعة قيمة null إذا كان المتغير فارغًا.
الكود:
int? returnNullButSometimesNot() { return -5; } void main() { int? result = returnNullButSometimesNot()?.abs(); print(result); }
نتيجة الكود:
5
مثال 6: Null Assertion Operator (!)
في هذا التمرين، سنستخدم عامل التأكيد على عدم القيمة الفارغة (!) لطباعة طول السلسلة أو إرجاع قيمة null إذا كان المتغير فارغًا.
الكود:
int findLength(String? name) { return name!.length; } void main() { int? length = findLength("Hello"); print("The length of the string is $length"); }
نتيجة الكود:
The length of the string is 5
مثال 7: Null Coalescing Operator (??)
إذا كنت ترغب في تعيين قيمة افتراضية لمتغير إذا كان فارغًا، يمكنك استخدام عامل دمج القيم الفارغة (??). في هذا التمرين، سنستخدم عامل دمج القيم الفارغة (??) لتعيين قيمة افتراضية للمتغير Stranger إذا كان فارغًا.
الكود:
void main() { String? name; name = null; String name1 = name ?? "Stranger"; print(name1); }
نتيجة الكود:
Stranger
مثال 8: Type Promotion
في هذا التمرين، سنقوم بحل الخطأ باستخدام ترقية النوع (Type Promotion).
الكود:
void main() { Object name = "Mark"; print("The length of name is ${name.length}"); }
نتيجة الكود:
Error: The getter 'length' isn't defined for the class 'Object'.
حل المشكلة باستخدام ترقية النوع:
الكود المعدل:
void main() { Object name = "Mark"; if (name is String) { print("The length of name is ${name.length}"); } else { print("The value is not a string."); } }
نتيجة الكود:
The length of name is 4
مثال 9: Type Promotion
في هذا التمرين، سنقوم بحل الخطأ باستخدام ترقية النوع (Type Promotion).
الكود:
import 'dart:math'; class DataProvider { String? get stringOrNull => Random().nextBool() ? "Hello" : null; void myMethod() { if (stringOrNull is String) { print("The length of value is ${stringOrNull.length}"); } else { print("The value is not a string."); } } } void main() { DataProvider().myMethod(); }
نتيجة الكود: قد يكون الناتج مختلفًا بناءً على قيمة عشوائية.
مثال 10: Late Keyword
في هذا التمرين، سنقوم باستخدام الكلمة المفتاحية late لحل الخطأ.
الكود:
class Person { late String _name; void setName(String name) { _name = name; } String get name => _name; } void main() { Person person = Person(); person.setName("Mark"); print(person.name); }
نتيجة الكود:
Mark
هذه كانت بعض التمارين المتعلقة بـ Null Safety في لغة Dart. يمكنك تطبيق هذه التمارين لتعزيز فهمك وممارستك لاستخدام Null Safety في تطوير تطبيقاتك بلغة Dart.