flutter - 如何处理本地状态与供应商的关系?
问题描述
我使用提供程序包来管理我的应用程序状态。关于如何管理应用程序中的状态,我有几个问题。
- 为我的应用程序中的每个屏幕创建一个 ChangeNotifier 类来处理此页面的后端(仅提供给此屏幕)是一个好习惯吗?
在这样的示例中:如果我有一个包含多个小部件的页面,并且我需要重建页面的一小部分,例如在启用开关时添加新的 TextField。
在前面的例子中
- 我应该使用提供程序仅重建页面的一小部分,还是这部分主要通过仅使用 changeState() 来处理?
如果页面的本地状态应该在屏幕中处理。
- 我应该在哪里放置页面的逻辑,例如按钮单击时的 http 请求和加载此页面的数据?
解决方案
如果您正在更新的状态只需要在一个小部件中,并且树中有一个或两个向下的小部件,我建议使用内置的 SetState。虽然 Provider 和 SetState 都适用于任何形式的状态管理,但我倾向于认为 Provider 类似于React Context。
- Provider 非常适合在页面级别保持状态,或者如果您想保持不同文件中的小部件构建和逻辑之间的分离。
- SetState 非常适合在下面没有很多嵌套小部件的本地小部件。
这是一篇很棒的文章,讨论了不同的状态管理解决方案方法。在一天结束时,这取决于偏好!
推荐阅读
- sqlite - 房间查询不适用于列表
使用类型转换器 - python - 如何在 Python 中移位以操作文件系统八进制
- kubernetes - Google Kubernetes Engine 上的 Apache Ignite Web 控制台?
- php - 使用随机唯一名称更新图像并使用数据库上传路径不起作用
- php - 如何使用来自服务器的数据库值在客户端设置选择选项
- vue.js - 如何使用 v-for 显示图像?
- android - SeekBar 双向数据绑定不更新 TextView
- javascript - 如何检查 Websocket 是否在 Javascript 中打开
- javascript - 获取 Chartjs 数组中最近 6 个月的名称
- javascript - 如何在 NodeJS 中解析 CSV 文件