假设我有一个主要的顶级Scaffold
,带有appBar
和body
。
我在应用栏中有一个按钮,在它的onTap
我这样做:
Navigator.push(
context,
new MaterialPageRoute(builder: (_) => new DogeWidget())
);
现在DogeWidget
也是一个Scaffold
,因为我喜欢appBar的默认呈现。
发生了什么事情:
- 我看到屏幕底部的
DogeWidget
幻灯片。这是一个滑动的整个脚手架,而不仅仅是身体。
我希望看到的:
- 主appBar的内容发生变化,其汉堡包变为"后退箭头"。没有从底部滑出,只是一个普通的淡入淡出。
我不知道我是否应该自己写这个,或者 Flutter 可以提供什么?
AFAICT,图库做我想要的(例如点击"排版"项( - 尽管我的代码几乎是识字的复制和粘贴,但行为是不同的。为什么?
有一段时间,我们有一个黑客,通过使 AppBar 成为英雄来实现这一点,但它不是一个好的实现,并且造成了比它值得的更多的麻烦,所以我们放弃了它。这可能就是你所看到的。
使用Navigator和当今的材料框架没有简单的方法可以做到这一点,尽管如果您愿意,您当然可以在控件层的顶部实现控件。不过,你可以做的是通过在 MaterialApp 的body
内安装一个导航器来实现它,然后手动替换 AppBar(可能通过像 AnimatedCrossFade 这样的交叉淡入淡出小部件(。
正确解决这个问题是我们打算在适当的时候做的事情,但我们目前优先考虑错误和 API 稳定性,所以我们不打算在短期内(未来几个月(这样做。