在不推送新视图的情况下更新基架内容(应用栏标题和正文)



假设我有一个主要的顶级Scaffold,带有appBarbody

我在应用栏中有一个按钮,在它的onTap我这样做:

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

现在DogeWidget也是一个Scaffold,因为我喜欢appBar的默认呈现。

发生了什么事情:

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

我希望看到的:

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

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

AFAICT,图库做我想要的(例如点击"排版"项( - 尽管我的代码几乎是识字的复制和粘贴,但行为是不同的。为什么?

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

使用

Navigator和当今的材料框架没有简单的方法可以做到这一点,尽管如果您愿意,您当然可以在控件层的顶部实现控件。不过,你可以做的是通过在 MaterialApp 的body内安装一个导航器来实现它,然后手动替换 AppBar(可能通过像 AnimatedCrossFade 这样的交叉淡入淡出小部件(。

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

相关内容

  • 没有找到相关文章

最新更新