يعد ListTile واحدًا من عناصر واجهة المستخدم الأكثر استخدامًا في Flutter. يستخدم ListTile عادة في إنشاء قوائم متداخلة وقوائم مستوية والتي تتضمن اسمًا وتفاصيل صغيرة وصورة دائرية صغيرة، على سبيل المثال، قائمة الاتصالات أو الصفحة الرئيسية في تطبيقات الويب.
يمكن استخدام ListTile في Flutter بشكل مباشر بدون الحاجة إلى بناء عنصر مخصص من الصفر. يتميز ListTile بسهولة الاستخدام والتخصيص، حيث يوفر العديد من الخصائص التي يمكن استخدامها لتحقيق التصميم المطلوب.
خصائص عنصر ListTile في فلاتر
1- الخاصية title
هذه الخاصية تعيد عنصر واجهة المستخدم الذي يتم عرضه في الجزء العلوي من ListTile. بشكل عام، يكون عنصر واجهة المستخدم هو نص يتم تمريره إلى هذه الخاصية.
ListTile( title: Text('Title Text'), )
2- الخاصية subtitle
هذه الخاصية تعيد عنصر واجهة المستخدم الذي يتم عرضه في الجزء السفلي من ListTile. يمكن استخدامها لعرض تفاصيل إضافية حول عنصر واجهة المستخدم الموجود في الخاصية title.
ListTile( title: Text('Title Text'), subtitle: Text('Subtitle Text'), )
“اقرأ أيضاً: شرح استخدام ويدجت StreamBuilder في فلاتر“
3- الخاصية leading
هذه الخاصية تعيد عنصر واجهة المستخدم الذي يتم عرضه في الجزء الأيسر من ListTile. يمكن استخدامها لعرض صورة دائرية صغيرة أو رمز.
ListTile( title: Text('Title Text'), leading: CircleAvatar( child: Icon(Icons.person), ), )
4- الخاصية trailing
هذه الخاصية تعيد عنصر واجهة المستخدم الذي يتم عرضه في الجزء الأيمن من ListTile. يمكن استخدامها لعرض أيقونة أو زر أو عنصر واجهة المستخدم آخر.
ListTile( title: Text('Title Text'), trailing: Icon(Icons.arrow_forward), )
5- الخاصية onTap
هذه الخاصية تعيد وظيفة يتم تنفيذها عند النقر على ListTile.
ListTile( title: Text('Title Text'), onTap: () { // do something }, )
6- الخاصية selected
هذه الخاصية تعيد قيمة بوليانية true أو false تعبر عن حالة تحديد ListTile. عند تعيين هذه الخاصية على true، يتم تحديد ListTile ويتم تغيير الأسلوب الذي يتم عرضه.
ListTile( title: Text('Title Text'), selected: true, )
“اقرأ أيضاً: شرح استخدام ويدجت ClipOval في فلاتر“
7- الخاصية enabled
هذه الخاصية تعيد قيمة بوليانية تعبر عن حالة تمكين ListTile. عند تعيين هذه الخاصيةعلى false، يتم تعطيل ListTile ويتم تغيير الأسلوب الذي يتم عرضه.
ListTile( title: Text('Title Text'), enabled: false, )
8- الخاصية contentPadding
هذه الخاصية تعيد حجم الهامش الداخلي لعنصر واجهة المستخدم داخل ListTile. يمكن استخدامها لتحديد المسافة المطلوبة بين عنصر واجهة المستخدم وحدود ListTile.
ListTile( title: Text('Title Text'), contentPadding: EdgeInsets.symmetric(vertical: 20, horizontal: 10), )
9- الخاصية dense
هذه الخاصية تعيد قيمة بوليانية تعبر عن حالة الكثافة لـ ListTile. عند تعيين هذه الخاصية على true، يتم تقليل الهامش الداخلي لـ ListTile ويتم عرض المزيد من العناصر في نفس المساحة.
ListTile( title: Text('Title Text'), dense: true, )
10- الخاصية shape
هذه الخاصية تعيد شكل ListTile. يمكن استخدامها لتحديد شكل وحجم الحواف لـ ListTile.
ListTile( title: Text('Title Text'), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: BorderSide(color: Colors.grey), ), )
11- الخاصية tileColor
هذه الخاصية تعيد لون الخلفية لـ ListTile.
ListTile( title: Text('Title Text'), tileColor: Colors.grey[200], )
12- الخاصية selectedTileColor
هذه الخاصية تعيد لون الخلفية لـ ListTile عند تحديده.
ListTile( title: Text('Title Text'), selectedTileColor: Colors.blue[100], selected: true, )
13- الخاصية focusColor
هذه الخاصية تعيد لون الخلفية لـ ListTile عند التركيز عليه.
ListTile( title: Text('Title Text'), focusColor: Colors.green[100], )
14- الخاصية hoverColor
هذه الخاصية تعيد لون الخلفية لـ ListTile عند مرور الماوس عليه.
ListTile( title: Text('Title Text'), hoverColor: Colors.yellow[100], )
مثال على استخدام ListTile في Flutter
هناك العديد من الأمثلة التي يمكن استخدامها لإظهار كيفية استخدام ListTile في تطبيق Flutter. فيما يلي مثال بسيط يستخدم ListTile لإنشاء قائمة بسيطة من العناصر:
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'ListTile Example', home: Scaffold( appBar: AppBar( title: const Text('ListTile Example'), ), body: ListView( children: [ const ListTile( leading: Icon(Icons.person), title: Text('John Doe'), subtitle: Text('johndoe@gmail.com'), trailing: Icon(Icons.arrow_forward), ), const ListTile( leading: Icon(Icons.person), title: Text('Jane Smith'), subtitle: Text('janesmith@gmail.com'), trailing: Icon(Icons.arrow_forward), ), const ListTile( leading: Icon(Icons.person), title: Text('Bob Johnson'), subtitle: Text('bobjohnson@gmail.com'), trailing: Icon(Icons.arrow_forward), ), ], ), ), ); } }
في هذا المثال، تم استخدام ListView لإنشاء قائمة من العناصر. ثم تم استخدام ListTile لإنشاء كل عنصر في القائمة. تم تخصيص كل عنصر باستخدام الخصائص المذكورة في المقال، بما في ذلك leading و title و subtitle و trailing. يتم عرض صورة دائرية صغيرة في الجزء الأيسر من كل عنصر، وعنوان وتفاصيل صغيرة في الجزء الأوسط، وأيقونة في الجزء الأيمن. يمكن للمستخدم النقر على أيقونة السهم للانتقال إلى صفحة أخرى.
هذا المثال يمثل استخدامًا بسيطًا لـ ListTile في Flutter. يمكن تخصيص ListTile بطرق مختلفة لتلبية احتياجات التصميم الفريدة لتطبيقك.
مثال آخر متقدم باستخدام ListView.builder
فيما يلي مثال يستخدم ListTile لإنشاء قائمة جهات الاتصال باستخدام ListView.builder:
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { final List<Contact> contacts = [ Contact('John Doe', 'johndoe@gmail.com', '1234567890'), Contact('Jane Smith', 'janesmith@gmail.com', '0987654321'), Contact('Bob Johnson', 'bobjohnson@gmail.com', '5555555555'), ]; @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'ListTile Example2', home: Scaffold( appBar: AppBar( title: const Text('Contacts'), ), body: ListView.builder( itemCount: contacts.length, itemBuilder: (BuildContext context, int index) { return ListTile( leading: CircleAvatar( child: Text(contacts[index].name[0]), ), title: Text(contacts[index].name), subtitle: Text(contacts[index].email), trailing: const Icon(Icons.call), onTap: () => _showContactDialog(context, contacts[index]), ); }, ), ), ); } void _showContactDialog(BuildContext context, Contact contact) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text(contact.name), content: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Text(contact.email), const SizedBox(height: 10), Text(contact.phone), ], ), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text('Close'), ), ], ); }, ); } } class Contact { final String name; final String email; final String phone; Contact(this.name, this.email, this.phone); }
في هذا المثال، تم استخدام ListView.builder لإنشاء قائمة جهات الاتصال. تم استخدام ListTile لإنشاء كل عنصر في القائمة. تم تخصيص كل عنصر باستخدام الخصائص المذكورة في المقال ، بما في ذلك leading و title و subtitle و trailing. يتم عرض صورة دائرية صغيرة في الجزء الأيسر من كل عنصر، وعنوان وتفاصيل صغيرة في الجزء الأوسط ، وأيقونة في الجزء الأيمن. عند النقر على أيقونة الاتصال، يتم عرض مربع حوار يحتوي على معلومات الاتصال الكاملة لجهة الاتصال.
يمكنك تخصيص هذا المثال ليتناسب مع احتياجات تطبيقك الفريدة.
“اقرأ أيضاً: شرح استخدام ويدجت RadioListTile في فلاتر“
يمكن استخدام ListTile في Flutter لإنشاء قوائم بسيطة ومتداخلة. يمكن تخصيص ListTile بشكل كبير باستخدام الخصائص المتاحة لتحقيق التصميم المطلوب. ويمكن الاطلاع على المثال المذكور في الأعلى للحصول على مزيد من الإرشادات حول كيفية استخدام ListTile في Flutter.