Menu
CoddyTech
flag Ar iconالعربيةdown icon

اسحب للحذف

جزء من قسم القوائم والشاشات في رحلة 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 أن المتغير يحتفظ دائمًا بالقائمة نفسها، لا أن القائمة لا تتغير أبدًا.

challenge icon

التحدي

سهل

يعرض شريط التطبيق عدد العناصر. اجعل قائمة التسوق قابلة للسحب: أَحِط كل عنصر 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)),
        ],
      ),
    );
  }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس القوائم والشاشات

تدرّب بنفسك: مترجم Flutter عبر الإنترنت