flutter从main文件push到二级界面,再从二级界面pop回去黑屏问题。
这两天写flutter代码时,发现了一个问题如图,在main.dart文件中push到二级界面
并在二级界面中代码pop回上级界面
此时屏幕黑屏,黑屏原因是因为materialApp,代码如图:
此时,去掉二级界面的materialApp,直接返回Scafford即可解决pop黑屏问题。
MaterialApp是Material库中提供的Flutter APP框架,类似于iOS中的navigationController,通过它可以设置应用的名称、主题、语言、首页及路由列表等。MaterialApp是一个widget;Scaffold:是Material库中提供的页面脚手架,类似于iOS中的viewController,本质也是一个widget,它提供了默认的导航栏、标题和包含主屏幕widget树的body属性。MaterialApp,实际上是整个APP的入口,类似于搭积木时最底层的积木,其他界面都是从materialApp push过去的,materialApp可以理解为一个大的容器,任何一个界面pop都相当于一个压栈的过程,而push是一个出栈的过程,无论你怎么pop、push都应该在这个容器内,而当你在另外一个文件中返回了materialApp,相当于新建了一个容器,因此,你pop时,你无法从新的容器中pop到另一个容器中,上一个界面是不存在的,因此黑屏。