大佬教程收集整理的这篇文章主要介绍了flutter – 使用Scaffold作为子项的InheritedWidget似乎不起作用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@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(),)); }
这在app开始时按预期工作,所以表面看来我在AuthenticatedWidget中正确实现了InheritedWidget模式,但是当我从其他地方返回主页(MyHomE)时:
Navigator.popAndPushNamed(context,'/home');
在MyHome的构建方法中调用(之前有效)然后导致authWidget为null:
final authWidget = AuthenticatedWidget.of(context);
完全可能我错过了如何正确实现IW的一些细微差别,但同样,它确实最初工作,我也看到其他人提出同样的问题(即“继承的小部件”标题下的here).
因此,不能使用Scaffold或MaterialApp作为InheritedWidget的子级吗?或者这可能是一个提出的错误?提前致谢!
@H_110_5@myInherited.of(context)将基本上查看当前上下文的父级,以查看是否存在MyInherited实例化.
问题是:您继承的窗口小部件在当前上下文中实例化.
=>没有MyInherited作为父母
=>紧急
诀窍是使用不同的上下文.
那里有很多解决方案.您可以在另一个窗口小部件中实例化MyInherited,以便构建方法的上下文将MyInherited作为父窗口.
或者你可以使用Builder来引入一个虚假的小部件,它会传递给你它的上下文.
建造者的例子:
return new MyInheritedWidget( child: new Builder( builder: (context) => new Scaffold(),);
出于同样的原因,另一个问题是,如果在路由中插入inheritedWidget,它将不在此路由之外.
解决方案很简单!
将MyInheritedWidget放在MaterialApp上方.
以上材料:
new MyInherited( child: new MaterialApp( // ... ),)
以上是大佬教程为你收集整理的flutter – 使用Scaffold作为子项的InheritedWidget似乎不起作用全部内容,希望文章能够帮你解决flutter – 使用Scaffold作为子项的InheritedWidget似乎不起作用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。