【问题标题】:Can't create ListView.builder with a list无法使用列表创建 ListView.builder
【发布时间】:2020-11-04 21:56:57
【问题描述】:

我尝试使用 List 构建 ListView.builder。

显示此错误:参数类型“CartItem”无法分配给参数类型“String”

这是我的代码:

class CartItem {
  String name;
  String quantity;
  String price;

  CartItem({
    this.name,
    this.quantity,
    this.price,
  });
}

List<CartItem> cartItem = [];

var _quantity = TextEditingController();

Widget cartList() {
  if (cartItem.length != 0) {
    return ListView.builder(
      itemCount: cartItem.length,
      itemBuilder: (context, index) {
        return Text(cartItem[index]);
      },
    );
  }
  return Text('Nothing in Cart');
}

这是我的小部件方法的实现:

RaisedButton(
                    elevation: 1,
                    color: Colors.blueGrey,
                    onPressed: () {
                      showDialog(
                        context: context,
                        builder: (BuildContext contex) {
                          return AlertDialog(
                            content: Column(
                              children: [
                                Text('Your Order List'),
                                Expanded(
                                  child: cartList(),
                                )
                              ],
                            ),
                          );
                        },
                      );
                    },
                    child: Text(
                      'Conferm Order',
                      textAlign: TextAlign.end,
                    ),
                  ),

【问题讨论】:

    标签: list flutter listview dart


    【解决方案1】:

    Text 小部件需要 String 作为参数,而 cartItem[index] 返回了 CartItem 的实例,这就是您收到错误的原因

    你应该使用

    return Text(cartItem[index].name);
    

    而不是这个

    return Text(cartItem[index]);
    

    示例代码

    Widget cartList() {
      if (cartItem.length != 0) {
        return ListView.builder(
          itemCount: cartItem.length,
          itemBuilder: (context, index) {
            return Text(cartItem[index].name);
          },
        );
      }
      return Text('Nothing in Cart');
    }
    

    【讨论】:

    • 您的答案是正确的,但我发现我的小部件方法存在另一个问题。它告诉我一个错误:Another exception was thrown: Assertion failed: file:~/flutter/packages/flutter/lib/src/rendering/mouse_tra cking.dart:392:12
    • @SantoShakil 尝试重启你的应用
    • 它不起作用。我认为这是另一个问题。但你的回答对于我对这篇文章的问题是正确的。非常感谢。
    猜你喜欢
    • 2021-01-01
    • 2019-07-04
    • 2018-08-11
    • 1970-01-01
    • 2016-02-10
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多