颤振传递列表到另一个类总是空的
Posted
技术标签:
【中文标题】颤振传递列表到另一个类总是空的【英文标题】:Flutter passing list to another class is always empty 【发布时间】:2021-10-28 19:21:58 【问题描述】:我正在尝试将一个列表从一个类发送到另一个类,但它总是空的,我有一个名为 Prochaines() 的类,它有一个名为 Items 的列表,我想将它发送到另一个名为 MesFavorisOn() 的类并且有它是自己的构造函数
List<Item> arr;
MesFavorisOn(required this.arr);
我正在尝试使用按钮单击传递列表
onPressed: ()
MesFavorisOn(arr: Items);
顺便说一句,从底部导航栏访问 MesFavorisOn 的唯一方法,我在底部导航栏的屏幕列表中有这个,我不确定,但我认为这个列表是空的
List<Widget> _buildScreens()
return [
ProchaineState(),
MesEncheres(),
MesFavorisOn(arr: []),
Autres(),
];
【问题讨论】:
【参考方案1】:你需要提升状态。
确保包含 _buildScreens 方法的 Widget 也具有 items
属性/字段
确保包含 _buildScreens 方法的 Widget 具有名为 updateItems
的新方法
通过其参数将updateItems
传递给 ProchaineState,作为回调。
在 ProchaineState 中的 onPressed 方法上,确保它调用回调 updateItems
这是 Flutter 中状态管理的基础。使用这种方法的缺点是,所有内置在 _buildScreens 方法中的小部件都会在触发 onPressed 的同时重新渲染
如果需要,我们可以使用其他库进行改进,例如 Riverpod 或 Bloc
【讨论】:
【参考方案2】:您的onPressed
并没有真正做任何事情,相反,您可以在_buildScreens()
处将Items
分配给MesFavoritesOn(arr:Items)
,然后如果您想用Items
的更新来更新MesFavoriteOn
,您可以只需在您的onPressed
中添加setState
。
【讨论】:
我明白,但问题是我需要从列表项中填写一个新列表并将其发送到 MesFavorisOn 类,当用户单击添加按钮时需要填写新列表跨度> 这就是setState
将要做的,将重建_buildScreens
,从而用新数据传递MesFavoritesOn
。当您按下按钮时,我假设 Items
已经充满了新数据,对吧?
但在 _buildScreens() 处执行 MesFavoritesOn(arr:Items) 的唯一方法是在此处声明整个列表,以上是关于颤振传递列表到另一个类总是空的的主要内容,如果未能解决你的问题,请参考以下文章