Flutter ListView组件不更新 解决办法
方法思路:
通过子组件向父数组传参数方式实现,通过子组件引用父组件 方法涵 调用 父组件的 setState来更新数据,使 ListView 再次渲染。
示例代码:
//主涵 class ListLottery extends StatefulWidget { const ListLottery({super.key}); @override State<ListLottery> createState() => _ListLotteryState(); } class _ListLotteryState extends State<ListLottery> { List ArrData = [];//数据列表 //自定义方法涵 funUpdate 子组件向父组件通信 传参数 void funUpdate(List arr) { setState(() { //方法涵被调用 更新dom <=================== 重要方法 由funUpdate驱动更新 ArrData = arr; }); } //生命周期 @override void initState() { super.initState(); //启动时业务请求 。。。。 } @override Widget build(BuildContext context) { /* 独立页面 */ return Scaffold( /* 顶部标题栏目 */ appBar: AppBar( title: Text("列表"), ), /* body模块 */ //循环列表 body: Stack( children: [ Container( child: ListView.builder( //列表数据 itemCount: ArrData.length, key: UniqueKey(),//随机key 必须 itemBuilder: (context, i) { return Text("不刷新 $i") }, ), ), ], ), ); } }
241 Views