我正在使用此问题中的方法来更改颤振中 Scaffold 的主体:
Flutter Drawer Widget - 更改 Scaffold.body 内容
所描述的方法非常有效。现在我只想在用户点击其中一个项目后自动关闭抽屉。
我尝试使用 Navigator.pop() 方法,但它会弹出整个屏幕,而不仅仅是抽屉。它让我看到一个全黑的屏幕。
有什么建议?
我希望在我的Flutter应用程序的根级别使用InheritedWidget,以确保所有子窗口小部件都可以使用经过身份验证的用户的详细信息.基本上让脚手架成为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(),
));
}
Run Code Online (Sandbox Code Playgroud)
这在app开始时按预期工作,所以表面看来我在AuthenticatedWidget中正确实现了InheritedWidget模式,但是当我从其他地方返回主页(MyHome)时:
Navigator.popAndPushNamed(context, '/home');
Run Code Online (Sandbox Code Playgroud)
在MyHome的构建方法中调用(之前有效)然后导致authWidget为null:
final authWidget = AuthenticatedWidget.of(context);
Run Code Online (Sandbox Code Playgroud)
完全有可能我缺少的是如何正确实现IW一些细微但同样,它最初做的工作,我也看到其他人提出同样的问题(即在此 "窗口小部件继承"标题下).
因此,不能使用Scaffold或MaterialApp作为InheritedWidget的子级吗?或者这可能是一个提出的错误?提前致谢!