Flutter هي إطار عمل متعدد المنصات يسمح للمطورين بإنشاء تطبيقات عالية الجودة التي تعمل على أنظمة iOS و Android و Web وغيرها. واحدة من العناصر الأساسية في تصميم التطبيقات هي CheckboxListTile، والذي يسمح للمستخدمين بتحديد خيارات متعددة من بين قائمة.
ما هو CheckboxListTile؟
CheckboxListTile هو عبارة عن عنصر تحكم يُستخدم في تطبيقات Flutter لتمكين المستخدمين من تحديد خيارات متعددة من بين قائمة. يتم تمثيل الخيارات بعلامات اختيار (checkboxes) مربعة، يتم وضع علامة X داخل المربع عندما يتم تحديد الخيار.
“اقرأ أيضاً: شرح استخدام ويدجت IntrinsicHeight في فلاتر“
خصائص CheckboxListTile
تحتوي CheckboxListTile على عدد من الخصائص التي يمكن تعديلها لتحقيق السلوك المطلوب. فيما يلي تفاصيل كل خاصية:
title
هي عنوان عنصر التحكم CheckboxListTile الذي يظهر بجوار المربع. إذا كانت هذه الخاصية فارغة، فلن يظهر أي عنوان.
CheckboxListTile( title: Text('Option 1'), value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
subtitle
هي نص يظهر تحت العنوان ويتم استخدامه للمزيد من التفاصيل عن الخيار.
CheckboxListTile( title: Text('Option 1'), subtitle: Text('Option 1 is selected'), value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
value
هي قيمة منطقية (Boolean) تحدد ما إذا كان المربع محددًا أو غير محدد.
CheckboxListTile( title: Text('Option 1'), value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
“اقرأ أيضاً: شرح استخدام AnimatedPositioned في فلاتر“
onChanged
هي دالة تستدعى عندما يتم تغيير حالة المربع.
CheckboxListTile( title: Text('Option 1'), value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
activeColor
هي لون المربع عندما يتم تحديده.
CheckboxListTile( title: Text('Option 1'), activeColor: Colors.red, value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
checkColor
هي لون العلامة X داخل المربع.
CheckboxListTile( title: Text('Option 1'), checkColor: Colors.white, value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
dense
هي قيمة منطقية تحدد ما إذا كانت العناصر ذات كثافة عالية أم لا.
CheckboxListTile( title: Text('Option 1'), dense: true, value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
contentPadding
هي مسافة محددة لتباعد العناصر داخل CheckboxListTile.
CheckboxListTile( title: Text('Option 1'), contentPadding: EdgeInsets.symmetric(horizontal: 16.0), value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
controlAffinity
هي موضع المربع المرتبط بالنص، إما إلى اليمين أو اليسار.
CheckboxListTile( title: Text('Option 1'), controlAffinity: ListTileControlAffinity.leading, value: _value1, onChanged: (bool value) { setState(() { _value1 = value; }); }, ),
مثال على استخدام CheckboxListTile في فلاتر
يمكن استخدام CheckboxListTile في فلاتر لتمكين المستخدمين من تحديد خيارات متعددة من بين قائمة. يمكن استخدام هذا العنصر لجمع البيانات من المستخدم واستخدامها في التطبيق حسب الحاجة.
هنا مثال يستخدم CheckboxListTile في فلاتر:
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { final List<bool> _values = [false, false, false, false]; @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Checkbox List Tile Example', home: Scaffold( appBar: AppBar( title: const Text('Checkbox List Tile Example'), ), body: ListView.builder( itemCount: _values.length, itemBuilder: (BuildContext context, int index) { return CheckboxListTile( title: Text('Option ${index + 1}'), value: _values[index], onChanged: (value) { setState(() { _values[index] = value!; }); }, ); }, ), floatingActionButton: FloatingActionButton( child: const Icon(Icons.done), onPressed: () { String selectedOptions = ''; for (int i = 0; i < _values.length; i++) { if (_values[i]) { selectedOptions += 'Option ${i + 1}, '; } } if (selectedOptions.isNotEmpty) { selectedOptions = selectedOptions.substring(0, selectedOptions.length - 2); print('Selected options: $selectedOptions'); } else { print('No options selected.'); } }, ), ), ); } }
في هذا المثال، تم استخدام CheckboxListTile لجمع الخيارات التي يتم تحديدها بواسطة المستخدم. يتم تمثيل الخيارات بعلامات اختيار (checkboxes) مربعة. يتم تخزين حالة كل خيار في قائمة _values. عندما يتم تحديد أي خيار، يتم استدعاء setState لتحديث حالة المربعات. عند الضغط على الزر “Done”، يتم فحص الخيارات المحددة وطباعتها في وحدة تحكم الإخراج Console.
“اقرأ أيضاً: شرح استخدام ويدجت Visibility في فلاتر“
CheckboxListTile هو عنصر تحكم مفيد يسمح للمستخدمين بتحديد خيارات متعددة من بين قائمة. يمكن تخصيص الخصائص المختلفة لتحقيق السلوك المطلوب، ويمكن استخدامها في أي تطبيق Flutter يتطلب تحديد خيارات من بين قائمة.