Home Articles

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

Asked
Viewed 1726 times
1

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

我在appBar中有一个按钮,在_1838760中我做了:

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

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

发生了什么:

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

我想看到的:

  • 主appBar的内容发生变化,其汉堡包变为"back arrow" . 从底部没有滑动,只是普通的褪色 .

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

AFAICT,Gallery做我想做的事情(例如点击"typography"项目) - 尽管我的代码是一个几乎有文化的复制和粘贴,但行为是不同的 . 为什么?

1 Answer

  • 1

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

    有's no easy way to do this using Navigator with today'的材料框架,尽管你可以在小部件层之上实现小部件,如果你愿意的话 . 您可以做的是通过在MaterialApp的 body 中使用导航器来实现它,然后手动替换AppBar(可能通过像AnimatedCrossFade这样的交叉淡入淡出小部件) .

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

Related