使用 Flutter Provider 管理嵌套类的状态

Posted

技术标签:

【中文标题】使用 Flutter Provider 管理嵌套类的状态【英文标题】:Manage state for nested classes using Flutter Provider 【发布时间】:2021-02-15 16:05:27 【问题描述】:

目前正在开发体育赛事计分应用程序。 应用程序的结构是这样的:

现在我正在尝试使用提供程序包来包含状态管理。

使用计数器在 Widget 树的最底部进行评分,每个 Widget 根据用户在旅途中的输入分别初始化命名模型 - 创建事件、添加部门和玩家都发生在一个对话框中。

我知道我需要为事件列表创建一个提供程序,但是,我不确定如何构建状态管理的其余部分。到目前为止,我尝试通过 ChangeNotifier 中的 mixin 将每个模型转换为提供程序,并使用 notifyListeners() 移动所有更改数据的方法,其中状态将被管理。 然而,经过大量的努力和搜索,我发现这不是管理模型内部状态的最佳方法。

理想的方法是什么? 我应该通过事件列表提供程序管理状态,还是应该在单独的文件中为每个模型创建提供程序?如果有,怎么做?

【问题讨论】:

嗨,你有没有想出一个解决方案?我也有同样的情况。 【参考方案1】:

我不太确定您的项目的全部范围,也不知道您对它的了解程度,但我强烈建议您查看 BLOC 库作为替代状态管理解决方案,以便在您的情况下简单地管理状态。

学习曲线相当低,有许多关于如何准确使用该库的教程,而且根据我的经验,BLOC 不太依赖外部人员使用该库的听众,如果这正是您所苦苦挣扎的。

这是BLOC Library的链接

如果您仍然坚持使用 Provider,我建议您出于多种原因在单独的文件中为每个模型创建一个提供程序,例如关注点分离、易于管理状态以及每个不同模型的清晰度。

【讨论】:

非常感谢您回答我的问题!我想问你,如果你能详细说明为什么我应该使用 bloc 而不是 provider ,这是进行状态管理的首选方式? (至少根据我目前的发现) 嗯,这真的是个人喜好,什么对这种情况有好处。对我来说,我发现 BLOC 的学习曲线非常低,而且对我来说很健壮且更容易测试。它很强大,因为您可以根据输入到集团中的输入轻松预测每个事件的结果。但是,这样说并不意味着你不能在你的应用程序中使用多个状态管理解决方案,例如,我在一个应用程序中使用了几个状态管理解决方案,包括 Provider 和 BLOC。所以不要觉得你仅限于 BLOC 或提供商。您可以同时使用两者,甚至还可以使用其他! 另外,请不要忘记将答案标记为正确,以便将来的用户知道哪个答案解决了您的问题! :)

以上是关于使用 Flutter Provider 管理嵌套类的状态的主要内容,如果未能解决你的问题,请参考以下文章

Flutter——sdk:状态管理provider

Flutter——sdk:状态管理provider

Flutter——sdk:状态管理provider

flutter Provider状态管理

从 Selector 访问多个字段(在 Flutter 中使用 Provider 状态管理时)?

Flutter Provider状态管理