我们的应用程序是建立在顶部Scaffold和这一点,我们已经能够使用内提供的电话,以适应大多数的我们的路线和导航的要求NavigatorState(pushNamed(),pushReplacementNamed(),等).我们不想要的是,当用户从我们的抽屉(导航)菜单中选择一个项目时,可以使用任何类型的"推送"动画.我们希望从导航菜单中单击目标屏幕,以有效地成为堆栈的新初始路径.目前我们正在使用pushReplacementNamed()来确保应用栏中没有后退箭头.但是,右下方的幻灯片意味着正在构建堆栈.
在没有动画的情况下更改初始路线的最佳选择是什么?我们可以这样做同时同时关闭抽屉的动画吗?或者我们是否正在考虑这样的情况:我们需要从导航器转移到仅使用单个脚手架并在用户想要更换屏幕时直接更新"正文"?
我们注意到有一个replace()电话NavigatorState我们认为它可能是开始寻找的正确位置,但目前还不清楚如何访问我们最初建立的各种路线new MaterialApp().replaceNamed()可能有点像顺序;-)
提前致谢!
我希望在我的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的子级吗?或者这可能是一个提出的错误?提前致谢!