List in Dart

شرح تفصيلي عن List في لغة Dart

List هي إحدى تراكيب البيانات (Data Structures) الأساسية في لغة Dart، وتُستخدم لتخزين مجموعة من القيم أو العناصر بترتيب معين، حيث يمكن الوصول إلى كل عنصر من خلال فهرسه (Index) الذي يبدأ من الصفر.


أنواع القوائم في Dart

  • قوائم ثابتة (Fixed-length List): يتم تحديد طول القائمة عند إنشائها ولا يمكن تغييره.
  • قوائم ديناميكية (Growable List): يمكن تغيير حجم القائمة بإضافة أو حذف العناصر بعد إنشائها.

إنشاء القوائم في Dart

1. قائمة ثابتة

void main() {
  List<int> myList = List.filled(3, 0); // قائمة بطول 3 عناصر وقيمتها الأولية 0
  myList[0] = 5;
  myList[1] = 10;
  myList[2] = 15;

  print(myList); // [5, 10, 15]
}
Dart

2. قائمة ديناميكية

void main() {
  List<String> myList = [];
  myList.add('Dart');
  myList.add('Flutter');
  myList.add('Programming');

  print(myList); // ['Dart', 'Flutter', 'Programming']
}
Dart

خصائص القوائم

الخاصيةالوصف
lengthالحصول على عدد العناصر في القائمة.
isEmptyيعيد true إذا كانت القائمة فارغة.
isNotEmptyيعيد true إذا كانت القائمة تحتوي على عناصر.
firstالحصول على العنصر الأول في القائمة.
lastالحصول على العنصر الأخير في القائمة.

مثال:

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  
  print(numbers.length); // 5
  print(numbers.first);  // 1
  print(numbers.last);   // 5
  print(numbers.isEmpty); // false
}
Dart

أهم الدوال المستخدمة مع List

الدالةالوصف
add()إضافة عنصر جديد إلى القائمة.
addAll()إضافة مجموعة من العناصر إلى القائمة.
insert()إدراج عنصر في موضع محدد.
remove()إزالة أول ظهور لعنصر معين.
removeAt()إزالة العنصر في موضع معين.
clear()إزالة جميع العناصر من القائمة.
indexOf()الحصول على الفهرس لأول ظهور لعنصر معين.
contains()التحقق من وجود عنصر معين في القائمة.
forEach()تنفيذ عملية على كل عنصر في القائمة.

أمثلة:

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  
  // إضافة عنصر
  fruits.add('Mango');
  
  // إزالة عنصر
  fruits.remove('Banana');
  
  // التحقق من وجود عنصر
  print(fruits.contains('Apple')); // true
  
  // تمرير عملية على جميع العناصر
  fruits.forEach((fruit) {
    print(fruit);
  });
}
Dart

الفرق بين List ثابت وديناميكي

  • القوائم الثابتة تكون أسرع في الأداء ولكن أقل مرونة.
  • القوائم الديناميكية توفر مرونة أعلى ولكن مع أداء أقل نسبيًا في بعض الحالات.