【问题标题】:Flutter ListView with widgets in a List doesn't updates when it shouldFlutter ListView 与 List 中的小部件不会在应该更新时更新
【发布时间】:2020-08-01 01:44:39
【问题描述】:

我正在尝试在全局列表中存储要由 ListView 构建的小部件,如下所示:

List<Widget> globalList= [];

我试图在有状态类的状态下构建一个 Listview,如下所示:

ListView(
  children: globalList
)

现在我每次都尝试渲染这个 Listview,当一个项目被添加到列表中时。我用于此的功能是:

void addList(){
    setState((){
      Widget _widget = new Widget();
      list.add(_widget);
    });

小部件(在我的伪代码中称为_widget)也是一个有状态小部件。但是当我调用addList 时,我的有状态小部件不会更新。为什么?

短(伪)-代码:

List<Widget> globalList = [];

class STFUL extends StatefulWidget{

  @override
  _STFULState createState() => _STFULState();
}

class _STFULState extends State<STFUL>{
  void addList(){
    setState((){
      Widget _widget = new Widget();
      globalList.add(_widget);
      });
@override
Widget build(BuildContext context) {
  return Scaffold(
    body:ListView(
      children: globalList
    )
  }  
} 

下面有一个按钮可以调用addList。我的问题是,当我调用 setState 时,ListView 不会呈现更新的列表。

感谢您的帮助

【问题讨论】:

    标签: listview flutter dart setstate


    【解决方案1】:

    使用ListView.Builder 代替您的ListView

    【讨论】:

    • 是的,你是对的。只需获取 itemCount 属性的列表长度,然后在构建器中返回 globalList[i]。非常感谢您的提示!
    猜你喜欢
    • 2021-08-06
    • 2021-01-10
    • 1970-01-01
    • 2020-11-16
    • 2018-11-01
    • 2020-08-18
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多