从 ListView.builder 中返回自定义卡片和关闭(添加和删除到列表视图)

Posted

技术标签:

【中文标题】从 ListView.builder 中返回自定义卡片和关闭(添加和删除到列表视图)【英文标题】:Return a custom card and dismisable from a ListView.builder (add and delete to a list view) 【发布时间】:2021-10-22 22:57:37 【问题描述】:

我想在 Flutter 应用中制作购物车,我想添加卡片,使用 ListView.builder 删除它们。所以我想在同一个列表视图中返回我的自定义卡片和可关闭的小部件,但我不知道如何。

这是代码

class CartScreen extends StatefulWidget 
  @override
  _CartScreenState createState() => _CartScreenState();


class _CartScreenState extends State<CartScreen> 
  List<Product>cartProducts=[];
  @override
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        actions: [
          IconButton(
              icon: Icon(Icons.home_rounded),
              onPressed: () 
                Navigator.pushNamed(context, 'homeScreen');
              )
        ],
        title: Text('Cart'),
        flexibleSpace: Container(
          decoration: BoxDecoration(
              gradient: LinearGradient(
                  begin: Alignment.bottomLeft,
                  end: Alignment.topRight,
                  colors: <Color>[
                kCostumeBlueColor6,
                kCostumeBlueColor5,
              ])),
        ),
      ),
      body: ListView.builder(itemBuilder: (context,index)
   //     return Dismissible(key: key, child: child);

        return CartCard(image: NetworkImage('link'), productName: cartProducts[index].getProductName(), price: cartProducts[index].getPrice(),);

      ,

      itemCount: cartProducts.length,)

    );
  

【问题讨论】:

【参考方案1】:

根据您的限制,您有多种选择:

    将您的 CartCard 包装在 Dismissible like 中
   return  Dismissible(key: key, child: CartCard(
      image: NetworkImage('link'),
      productName: cartProducts[index].getProductName(),
      price: cartProducts[index].getPrice(),));
    如果它们确实是两个独立的小部件,请使用 Column 来制作您想要的布局
   return  
Column(children:[
Dismissible(key: key, child: ),
CartCard(
      image: NetworkImage('link'),
      productName: cartProducts[index].getProductName(),
      price: cartProducts[index].getPrice(),)
]);
    如果您的项目很少并且不需要 ListView.builder,您可以使用价差:
   return  
ListView(children:[
for (final cart in cartProducts)
...[Dismissible(key: key, child: ),
CartCard(
      image: NetworkImage('link'),
      productName: cart.getProductName(),
      price: cart.getPrice(),)]
]);

【讨论】:

以上是关于从 ListView.builder 中返回自定义卡片和关闭(添加和删除到列表视图)的主要内容,如果未能解决你的问题,请参考以下文章

如何构建包含 ListView.Builder 的自定义行,以在颤动中构建 ElevatedButton?

Flutter listview随机单词显示及自定义dialog

Flutter listview随机单词显示及自定义dialog

ListView.builder 到达列表末尾并向后滚动后返回起始位置

将数据构建回 ListView Builder [Flutter]

如何从 Listview.builder 中获取模型类 Flutter 的列表索引