Flutter-页面导航后保留抽屉

问题描述 投票:0回答:1

我在main.dart上有一个Drawer小部件。抽屉在此页面上运行良好,但是当我使用以下代码导航到其他页面时,我将丢失新页面上的抽屉。浏览到单独的页面后,有没有建议的方法来保留抽屉?

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

我在stackoverflow中看到了类似的问题,但无法得到答案。

flutter
1个回答
0
投票

drawer是Scaffold的一部分,如果导航到另一个Widget,则意味着您更改了屏幕,因此也更改了Scaffold,因此应该拥有自己的抽屉。

所以您可以通过两种方式对此进行存档:

  1. 只需更改bodyScaffold而不是用Navigator.of(context).push()推送新的小部件,并做一些动画以显示新屏幕的到来。

  2. Navigationdrawer制作单独的小部件并将其添加到每个Scaffold小部件,当您需要该屏幕上的导航抽屉时。

    您还可以使NavigationDrawer小部件单例成为NavigationDrawer的提供者,并使用MaterialApp小部件使其与CupertinoAppProvider全局。这样,您还可以在应用程序中恢复导航抽屉的状态。

© www.soinside.com 2019 - 2024. All rights reserved.