【问题标题】:Flutter ListView doesn't update on setStateFlutter ListView 不会在 setState 上更新
【发布时间】:2020-11-16 03:30:34
【问题描述】:

当我的 setState 在我的 State 类中运行时,我的颤振 ListView 不会更新。

是的,我的主类是一个有状态的小部件,以防有人想知道

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new _MyAppState();
}

我的 setState 函数

setState(() {
        if (price == "null") {
          items.add("Item ${counter + 1}: error");
          print("null");
        } else {
          items.add("Item ${counter + 1}: $price");
          print("$price");
          totalPrice += price;
        }
        counter++;
      });
    });

在我将 ListView 放入容器 -> 列 -> 展开之前,它工作正常。但是在我添加它之后,当我的 setState 运行时它停止更新

body: new Container(
         child: Column(
           children: <Widget>[
             Expanded(
               child: ListView.builder(
                 itemCount: items.length,
                 itemBuilder: (context, index) {
                   final item = items[index];

                   return Dismissible(
                     key: Key(item),
                     onDismissed: (direction) {
                       setState(() {
                         items.removeAt(index);
                         counter--;
                       });
                       Scaffold.of(context).showSnackBar(
                           SnackBar(content: Text("$item deleted")));
                     },
                     background: Container(color: Colors.red),
                     child: ListTile(title: Text('$item')),
                   );
                 },
               ),
             ),

能否请一位对 Flutter 更了解的人告诉我这里发生了什么。我认为将 ListView 添加到容器中不会对其工作方式产生太大影响吗?

【问题讨论】:

    标签: list flutter listview dart stateful


    【解决方案1】:

    在 setstate 中进行计算不知何故导致了这个问题。相反,我在 build 中进行了计算,并且我使用 setstate 仅添加到列表中。然后它会触发构建,剩下的事情就会发生在那里。这解决了我的问题

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2021-01-04
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2020-02-02
      • 2021-07-01
      • 1970-01-01
      • 2019-12-16
      相关资源
      最近更新 更多