(4) methods In List

1️⃣ sublist(start, [end])
✅ الاستخدام:

ترجع جزء (مقطع) من القائمة الأصلية من start إلى end - 1.

📌 مثال 1:
List<int> nums = [10, 20, 30, 40, 50];
var sub = nums.sublist(1, 4);

print(sub);  // [20, 30, 40]
JavaScript
📌 مثال 2:
List<String> names = ['Ali', 'Sara', 'Omar'];
print(names.sublist(1));  // ['Sara', 'Omar']
JavaScript
2️⃣ shuffle()
✅ الاستخدام:

يقوم بترتيب عناصر القائمة بشكل عشوائي (تُغير القائمة الأصلية).

📌 مثال 1:
List<int> numbers = [1, 2, 3, 4, 5];
numbers.shuffle();
print(numbers);  // ترتيب عشوائي كل مرة
JavaScript
📌 مثال 2:
List<String> cards = ['A', 'B', 'C', 'D'];
cards.shuffle();
print(cards);  // ترتيب عشوائي للكروت
JavaScript
3️⃣ asMap()
✅ الاستخدام:

تحول القائمة إلى Map حيث:

  • المفاتيح = الأرقام (index)
  • القيم = القيم الأصلية
📌 مثال 1:
List<String> items = ['apple', 'banana', 'orange'];
Map<int, String> mapped = items.asMap();

print(mapped);  // {0: apple, 1: banana, 2: orange}
JavaScript
📌 مثال 2:
items.asMap().forEach((index, value) {
  print('Index $index => $value');
});
JavaScript
4️⃣ whereType<T>()
✅ الاستخدام:

تُصفّي العناصر حسب نوعها (String, int, bool…)

📌 مثال 1:
List<dynamic> mixed = [1, 'hello', true, 2.5];

var onlyInts = mixed.whereType<int>().toList();
print(onlyInts);  // [1]
JavaScript
📌 مثال 2:
var onlyStrings = mixed.whereType<String>().toList();
print(onlyStrings);  // ['hello']
JavaScript
5️⃣ getRange(start, end)
✅ الاستخدام:

مثل sublist تمامًا ولكن ترجع Iterable بدل List.

📌 مثال 1:
List<int> nums = [10, 20, 30, 40, 50];
var range = nums.getRange(1, 4);
print(range);  // (20, 30, 40)
JavaScript
📌 مثال 2:
for (var x in nums.getRange(2, 5)) {
  print(x);  // 30, 40, 50
}
JavaScript
6️⃣ any((element) => شرط)
✅ الاستخدام:

ترجع true إذا يوجد عنصر واحد على الأقل يحقق الشرط.

📌 مثال 1:
List<int> numbers = [1, 2, 3, 4];

bool hasEven = numbers.any((n) => n % 2 == 0);
print(hasEven);  // true
JavaScript
📌 مثال 2:
List<String> names = ['Ali', 'Sara', 'Omar'];

print(names.any((name) => name.startsWith('S')));  // true
JavaScript
7️⃣ every((element) => شرط)
✅ الاستخدام:

ترجع true فقط إذا جميع العناصر تحقق الشرط.

📌 مثال 1:
List<int> scores = [60, 70, 80];

bool allPassed = scores.every((s) => s >= 50);
print(allPassed);  // true
JavaScript
📌 مثال 2:
List<String> tags = ['php', 'dart', 'css'];

bool allShort = tags.every((tag) => tag.length <= 5);
print(allShort);  // true
JavaScript
8️⃣ take(n)
✅ الاستخدام:

تأخذ أول n عناصر فقط من القائمة.

📌 مثال 1:
List<int> nums = [1, 2, 3, 4, 5];

print(nums.take(3).toList());  // [1, 2, 3]
JavaScript
📌 مثال 2:
List<String> langs = ['Dart', 'PHP', 'JS', 'Python'];

var short = langs.take(2).toList();
print(short);  // [Dart, PHP]
JavaScript
9️⃣ skip(n)
✅ الاستخدام:

يتجاوز أول n عناصر ويُرجع الباقي.

📌 مثال 1:
List<int> nums = [10, 20, 30, 40, 50];

print(nums.skip(2).toList());  // [30, 40, 50]
JavaScript
📌 مثال 2:
List<String> topics = ['HTML', 'CSS', 'JS', 'Dart'];

print(topics.skip(1).toList());  // [CSS, JS, Dart]
JavaScript
✅ ملخص سريع بصري:
الدالةالوظيفة
sublist()ترجع جزء من القائمة
shuffle()تخلط الترتيب عشوائيًا
asMap()تحول القائمة إلى Map (index: value)
whereType<T>()تُرجع العناصر التي تنتمي لنوع معين فقط
getRange()مثل sublist لكن ترجع Iterable
any()هل يوجد عنصر واحد يحقق شرط؟
every()هل كل العناصر تحقق شرطًا؟
take(n)تأخذ أول n عناصر
skip(n)تتجاوز أول n عناصر