1

Scaffold假设我有一个带有appBarand and的主要顶层body

我在 appBar 中有一个按钮,onTap我在其中:

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

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

发生了什么:

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

我想看到的:

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

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

AFAICT,画廊做我想要的(例如点击“排版”项目) - 尽管我的代码几乎是文字复制和粘贴,但行为是不同的。为什么?

4

1 回答 1

1

有一段时间,我们有一个 hack,通过将 AppBar 设置为 Hero 来实现这一点,但这不是一个好的实现,并且造成的麻烦比它的价值要多,所以我们放弃了它。这可能就是你所看到的。

使用 Navigator 和当今的材质框架没有简单的方法可以做到这一点,尽管如果您愿意,您当然可以在小部件层之上实现小部件。不过,您可以通过在 MaterialApp 中使用 Navigator 来实现它body,然后手动替换 AppBar(可能通过 AnimatedCrossFade 之类的交叉淡入淡出小部件)。

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

于 2017-04-13T18:03:49.637 回答