假设我有一个带有Scaffold
和appBar
的主要顶级body
。
我在appBar中有一个按钮,在onTap
我这样做:
Navigator.push(
context,
new MaterialPageRoute(builder: (_) => new DogeWidget())
);
现在DogeWidget
也是Scaffold
,因为我喜欢appBar的默认渲染。
发生了什么:
DogeWidget
幻灯片。它是整个脚手架滑动,而不仅仅是身体。我想看到的内容:
我不知道自己应该写这个还是Flutter可以提供什么?
AFAICT,Gallery按我的意愿行事(例如点击"排版"项目) - 尽管我的代码几乎是文字的复制和粘贴,但行为却有所不同。为什么呢?
答案 0 :(得分:1)
有一段时间我们有一个黑客通过让AppBar成为英雄来实现这一点,但这不是一个好的实现并且造成了比它值得更多的麻烦所以我们支持它。那可能就是你所看到的。
使用Navigator和今天的材料框架没有简单的方法,尽管你可以在小部件层之上实现小部件,如果你愿意的话。您可以做的是通过在MaterialApp的body
内部使用导航器来实现它,然后手动替换AppBar(可能通过像AnimatedCrossFade这样的交叉淡入淡出小部件)。
正确解决这个问题是我们打算在适当的时候做的事情,但我们目前正在优先考虑错误和API稳定性,因此我们不打算在近期(未来几个月)做些事情。