在我的应用程序中,我创建了小部件的ListView列表,但当我try 通过List更新它时,它没有更新

示例代码:

import 'package:flutter/material.dart';

class ListTest extends StatefulWidget {
  const ListTest({Key? key}) : super(key: key);

  @override
  State<ListTest> createState() => _ListTestState();
}

class _ListTestState extends State<ListTest> {
  List<Widget> widget_list = [
    ListTile(title: Text("1"),),
    ListTile(title: Text("2"),),
    ListTile(title: Text("3"),),
  ];
  @override
  Widget build(BuildContext context) {
    print("List Length: "+widget_list.length.toString());
    return Scaffold(
      appBar: AppBar(
        title: Text("List Test"),
      ),
      body: ListView(
        children: widget_list,
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.delete),
        onPressed: (){
          widget_list.clear();
          setState(() {});
        },
      ),
    );
  }
}

在这里,当打开页面时,列表长度为3,当调用setState时,打印列表长度为0,但不更新ListView.

推荐答案

您可以通过使用ListView.Builder而不是ListView来解决此问题.有了您提供给ListView.Builder的itemCount,列表中元素的数量就变成了动态的.当元素数量发生变化时,列表编号将再次更新.

ListView.builder(
    itemCount: widget_list.length,
    itemBuilder: (context, index) {
      return ListTile(
        title: widget_list[index],
      );
    },
  ),

Flutter相关问答推荐

在Flutter中,CachedNetworks Image不工作(不从CachedData加载)

具有可变高度小部件的SingleChildScrollView内的列

从Flutter应用程序解释蓝牙BLE数据:了解Sylvania压力值

如何使页面浏览量达到活动页面所要求的高度?

无法在我的Flutter 应用程序中使用GoRouter测试导航

从.gitignore中排除.fvm/fvm_config.json

如何在Flutter 安全存储器中存储对象值?

如何将带有参数的函数传递给FIFTH中的自定义小部件

Flutter飞溅屏幕即使在修改后仍显示默认徽标和背景色

如何在 Flutter 中以背景 colored颜色 制作圆圈的一部分

自定义类提供程序 Riverpod Flutter 中的可变变量

无状态小部件被奇怪地重建

Flutter 应用程序在启动画面冻结(java.lang.RuntimeException:无法启动活动 ComponentInfo)

从子类调用超类的超方法

在 CircleAvatar 中放置芯片

如何限制用户每 24 小时执行的操作数?

单元测试中如何比较NaN和NaN是否相等

Future.wait() 中的 futures 可以顺序调用吗?

如何从 Flutter 中的列表中提取 JSON?

如何做到这一点,当我们在 textified 中输入 ab 然后将 applebanana 显示为一个单词?飘飘然