اسحب للحذف
جزء من قسم القوائم والشاشات في رحلة Flutter على Coddy. الدرس 26 من 33.
في تطبيق بريد أو تسوّق، تمسح عنصرًا بإزاحته خارج الشاشة. لفّ الصف داخل Dismissible:
Dismissible(
key: ValueKey(item),
onDismissed: (direction) {
setState(() {
items.remove(item);
});
},
child: ListTile(title: Text(item)),
)ينزلق الصف مبتعدًا تحت إصبعك. عندما يختفي، تُنفَّذ onDismissed، وتحذف العنصر من قائمتك داخل setState. إذا لم تفعل ذلك، فستظل القائمة تحتوي عليه، وسيتوقف Flutter مع ظهور خطأ: الصف الذي أزلته لا يزال في القائمة.
تخبر key Flutter أيّ صف هو أيّ صف، لذا يجب أن تكون مختلفة لكل صف: تستخدم ValueKey(item) العنصر نفسه.
items هي final، ولا يزال بإمكانك الحذف منها: تعني final أن المتغير يحتفظ دائمًا بالقائمة نفسها، لا أن القائمة لا تتغير أبدًا.
التحدي
سهليعرض شريط التطبيق عدد العناصر. اجعل قائمة التسوق قابلة للسحب: أَحِط كل عنصر ListTile بعنصر Dismissible مستخدمًا ValueKey(item) مفتاحًا له، وأزل العنصر من items عند سحبه بعيدًا.
جرّب بنفسك
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final List<String> items = ['Milk', 'Bread', 'Eggs', 'Apples', 'Cheese'];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('${items.length} items')),
body: ListView(
children: [
for (String item in items)
ListTile(title: Text(item)),
],
),
);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس القوائم والشاشات
1قوائم قابلة للتمرير
قائمة قابلة للتمريرعناصر القائمةالبداية والنهايةاضغط على عنصر قائمةفواصل بين الصفوف6علامات التبويب والأدراج والتمرير بالسحب
علامات التبويب مع شريط تنقلأيقونات ممتلئة لعلامة التبويب المفتوحةدرج جانبياسحب للحذفالتراجع عن السحبتدرّب بنفسك: مترجم Flutter عبر الإنترنت