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