关于 Flutter InheritedWidget 组件之间传值(flutter)

发布于 1周前 作者 sinazl 来自 Flutter

以前看着《第一行代码》学了些 android 编程,后来长时间不用都忘光了。最近想做一个 APP 看 flutter 不错,就试着学了下。各种 widget 满天飞,一层一层。读取数据必须要用 Future,初始化获取数据也是一层 widget 各层数据独立还好,互相传值好麻烦。非要外面套一层 InheritedWidget。 退出检查又要套一层 widget。 请问大佬有没有好一点的关于数据读取,修改,保存的 flutter demo 目前常用 python 写点小程序,一个 global 就搞定了,哪里需要直接用。


关于 Flutter InheritedWidget 组件之间传值(flutter)

更多关于关于 Flutter InheritedWidget 组件之间传值(flutter)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

更多关于关于 Flutter InheritedWidget 组件之间传值(flutter)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,InheritedWidget 是一种强大的机制,用于在组件树中向下传递数据。这对于实现主题切换、状态管理等场景非常有用。关于 InheritedWidget 组件之间传值,这里有几个关键点需要理解:

  1. 创建自定义的 InheritedWidget: 首先,你需要创建一个继承自 InheritedWidget 的自定义类,这个类需要实现 inheritFromWidgetOfExactType 方法和包含一个能够返回数据的静态方法。

  2. 插入 InheritedWidget: 在你的组件树的顶层(通常是 MaterialAppCupertinoApp 下面),插入这个自定义的 InheritedWidget

  3. 访问数据: 在子组件中,你可以使用 Dependencies.of<T>(context)(其中 T 是你的 InheritedWidget 的类型)来访问传递的数据。注意,context 必须是当前组件或其父组件的上下文。

  4. 更新数据: 当 InheritedWidget 中的数据变化时,你需要创建一个新的 InheritedWidget 实例,并将它插入到组件树中,这样子组件才能接收到更新的数据。这通常通过状态提升(lifting state up)到更高层的组件来实现。

  5. 性能考虑: 由于 InheritedWidget 会在每次构建时遍历整个子树来寻找最近的提供者,所以在性能敏感的场景下,需要注意不要滥用。

总之,InheritedWidget 是一种灵活且强大的工具,但需要谨慎使用,以避免性能问题和不必要的复杂性。

回到顶部