✅ التعريف:
ListView.separated
تشبه builder
ولكنها تسمح بإضافة فاصل (separator) بين كل عنصرين.
✅ الصيغة العامة:
ListView.separated(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
);
},
separatorBuilder: (context, index) => Divider(),
);
Dart
✅ أهم الخصائص:
الخاصية | النوع | الشرح |
---|
itemCount | int | عدد العناصر |
itemBuilder | Function | دالة بناء العنصر |
separatorBuilder | Function | دالة بناء الفاصل بين العناصر |
باقي الخصائص مثل: scrollDirection , physics , shrinkWrap , padding نفس builder | | |
✅ الاستخدام المثالي:
- عندما تحتاج إلى فواصل بين العناصر.
- عند عرض قائمة بإطار معين.
- لعرض بيانات بصريًا مفصولة (مثل الرسائل أو الإشعارات).
✅ مثال عملي:
ListView.separated(
itemCount: 5,
itemBuilder: (context, index) {
return ListTile(
leading: Icon(Icons.message),
title: Text('رسالة ${index + 1}'),
);
},
separatorBuilder: (context, index) {
return Divider(
color: Colors.grey,
thickness: 1,
);
},
);
Dart
✅ الفرق بين builder
و separated
الميزة | ListView.builder | ListView.separated |
---|
فواصل بين العناصر | ❌ لا يوجد فواصل افتراضيًا | ✅ يمكنك تخصيص فواصل |
الأداء | ممتاز مع القوائم الكبيرة | ممتاز كذلك |
سهولة الاستخدام | أسهل إذا لم تحتاج فواصل | أكثر تنظيمًا في حالة الفواصل |
🟢 نصائح وأفضل الممارسات:
- استخدم
builder
إذا لم تحتاج إلى فاصل.
- استخدم
separated
عندما تحتاج إلى فاصل بين العناصر بشكل دائم.
- ضع
shrinkWrap: true
عندما تكون القائمة داخل Column
أو أي عنصر غير محدد الارتفاع.
- اجعل
itemCount
واضح لتجنب أخطاء RangeError
.
- تجنب جعل القوائم الكبيرة داخل
SingleChildScrollView
، فهذا يهدر الذاكرة.