颤振传递列表到另一个类总是空的

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) 的唯一方法是在此处声明整个列表,

以上是关于颤振传递列表到另一个类总是空的的主要内容,如果未能解决你的问题,请参考以下文章

无法通过intent将数组列表从一个活动传递到另一个活动

将一个列表从一个类传递到另一个表单的列表框

使用 Flutter Provider 将数据传递到另一个屏幕

将用户的消息传递到另一个 tableview

列表为空(颤振)

反应将 onClick 值从一个类传递到另一个类