flutter - Flutter/Dart:我的小部件树中可以有多个带有状态的小部件吗?
问题描述
我一直在想,为什么我必须在树中“提升”某些小部件的状态,以反映小部件 UI 的变化。我不能简单地拥有多个有状态的小部件吗?例如,将树中最低的有状态小部件导入到我的顶级小部件中,从那里我可以不只是调用我的小部件的一些方法来触发它的 setState() 方法,并且只是更新 DOM 树中的那个部分关心我的小部件?
其次,我必须将我的属性和其他重要部分从较低的小部件也移动到我的较高状态的小部件中,冒着在某个时候用不相关的功能和属性混淆该类的风险,在我看来,React 更好地解决了这个问题通过只传递适合的方法回调......
我的 Flutter 应用程序中是否总是只有一个有状态的小部件处于最高级别?
解决方案
父母无权访问子小部件/状态,只能反过来。所以你不能“将树下的最低状态小部件导入我的顶级小部件”
当您想在小部件树的不同分支之间共享该状态时,您只需要“提升状态”。然后孩子可以查找父母并访问共享状态。
不要害怕
StatefulWidget
- 您可以根据需要使用任意数量研究 Flutter 状态管理解决方案,这些解决方案的存在正是为了保持事物分离(ChangeNotifier、Provider、BLOC、Redux 等)
推荐阅读
- reactjs - ChunkLoadError:加载块 XY 失败。- 在生产中随机致命
- javascript - 如何避免在Android中重新渲染相机?
- php - 将 Ymd H:i:s 日期时间转换为月名、日数、年数、时间(上午或下午)
- javascript - 启动 nanoexpress 服务器失败
- react-native - React Native navigation TypeError: undefined is not an object (evalating 'Object.keys(routeConfigs)')
- matplotlib - Matplotlib imread() 颜色设置参数建议
- python - 使用 Pandas 获取数据集中的前一行值
- python - 如何在字符串中第一次出现后删除每个出现的字符
- javascript - 在 Javascript 中访问属性的 Pythonic 方式
- mysql - 获取 MySQL 中最长和最短的“链”?