返回
解构 InheritedWidget:传递状态的强大工具
前端
2023-12-28 12:12:13
In Flutter 中,InheritedWidget 扮演着传递状态的至关重要角色,为我们构建复杂的 UI 层次结构提供了无限可能。让我们深入探究 InheritedWidget 的精髓,揭开其在应用程序开发中的强大功能。
什么是 InheritedWidget?
InheritedWidget 是一个基类,允许您构建自定义小部件,这些小部件能够在整个小部件树中传递状态。它允许子小部件访问其父小部件中的数据,而无需显式传递该数据。
如何使用 InheritedWidget?
要使用 InheritedWidget,您需要创建两个类:
- InheritedWidget 子类: 创建一个扩展 InheritedWidget 的子类。这个子类将包含您希望传递的状态数据。
- 构建函数: 在构造函数中,初始化您要传递的状态数据。
一个例子
考虑一个应用程序,其中您希望在整个 UI 中传递当前用户。您可以使用 InheritedWidget 创建一个名为 CurrentUserProvider
的自定义小部件,如下所示:
class CurrentUserProvider extends InheritedWidget {
final User currentUser;
const CurrentUserProvider({
Key? key,
required this.currentUser,
required Widget child,
}) : super(key: key, child: child);
static CurrentUserProvider of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<CurrentUserProvider>()!;
}
@override
bool updateShouldNotify(CurrentUserProvider oldWidget) =>
currentUser != oldWidget.currentUser;
}
使用 CurrentUserProvider
要使用 CurrentUserProvider
,您可以将其包裹在您希望访问 currentUser
状态的任何小部件周围:
CurrentUserProvider(
currentUser: _currentUser,
child: MyWidget(),
);
然后,您的 MyWidget
可以使用 InheritedWidget.of()
方法访问 currentUser
:
final currentUser = CurrentUserProvider.of(context).currentUser;
SEO 优化