更新脚手架内容(appBar标题和正文)而不推新视图?

时间:2017-04-13 07:40:20

标签: dart material-design flutter

假设我有一个带有ScaffoldappBar的主要顶级body

我在appBar中有一个按钮,在onTap我这样做:

Navigator.push(
    context,
    new MaterialPageRoute(builder: (_) => new DogeWidget())
);

现在DogeWidget也是Scaffold,因为我喜欢appBar的默认渲染。

发生了什么:

  • 我看到屏幕底部的DogeWidget幻灯片。它是整个脚手架滑动,而不仅仅是身体。

我想看到的内容:

  • 主appBar的内容发生变化,其汉堡包变为"后退箭头"。从底部没有滑动,只是普通的淡化。

我不知道自己应该写这个还是Flutter可以提供什么?

AFAICT,Gallery按我的意愿行事(例如点击"排版"项目) - 尽管我的代码几乎是文字的复制和粘贴,但行为却有所不同。为什么呢?

1 个答案:

答案 0 :(得分:1)

有一段时间我们有一个黑客通过让AppBar成为英雄来实现这一点,但这不是一个好的实现并且造成了比它值得更多的麻烦所以我们支持它。那可能就是你所看到的。

使用Navigator和今天的材料框架没有简单的方法,尽管你可以在小部件层之上实现小部件,如果你愿意的话。您可以做的是通过在MaterialApp的body内部使用导航器来实现它,然后手动替换AppBar(可能通过像AnimatedCrossFade这样的交叉淡入淡出小部件)。

正确解决这个问题是我们打算在适当的时候做的事情,但我们目前正在优先考虑错误和API稳定性,因此我们不打算在近期(未来几个月)做些事情。