【发布时间】:2018-08-28 15:37:35
【问题描述】:
我希望在我的 Flutter 应用程序的根级别使用 InheritedWidget,以确保所有子小部件都可以使用经过身份验证的用户的详细信息。基本上让 Scaffold 成为 IW 的子节点,如下所示:
@override
Widget build(BuildContext context) {
return new AuthenticatedWidget(
user: _user,
child: new Scaffold(
appBar: new AppBar(
title: 'My App',
),
body: new MyHome(),
drawer: new MyDrawer(),
));
}
这在应用程序启动时按预期工作,因此在表面上 似乎 我已经在我的 AuthenticatedWidget 中正确实现了 InheritedWidget 模式,但是当我从其他地方返回主页 (MyHome) 时这个:
Navigator.popAndPushNamed(context, '/home');
这个调用 MyHome 的 build 方法(之前有效)然后导致 authWidget 为空:
final authWidget = AuthenticatedWidget.of(context);
完全有可能我错过了如何正确实施 IW 的一些细微差别,但同样,它最初确实有效,而且我也看到其他人提出了同样的问题(即“继承的小部件”标题下的 here)。
因此不能使用 Scaffold 或 MaterialApp 作为 InheritedWidget 的子级吗?或者这可能是一个要提出的错误?提前致谢!
【问题讨论】: