所有页面上的Flutter AppBar

时间:2019-10-05 10:57:45

标签: flutter flutter-layout flutter-appbar

在我们的应用中,我们希望所有页面上都具有相同的AppBar,而不必每次都将其添加到每个页面中。如果我们从本文Persisting AppBar Drawer across all Pages Flutter的RémiRousselet那里获得答案,并另外添加一个这样的AppBar

MaterialApp(
  title: 'Flutter Demo',
  builder: (context, child) {
    return Scaffold(
      drawer: MyDrawer(),
      appBar: MyAppBar(),
      body: child,
    );
  },
  home: MyHome()
)

不需要在每个页面中添加AppBar,但是在尝试使用类似PopUpMenu的操作添加操作时

actions: <Widget>[
  PopupMenuButton<Choice>(
    itemBuilder: (BuildContext context) {
      return choices.skip(2).map((Choice choice) {
        return PopupMenuItem<Choice>(
          value: choice,
          child: Text(choice.title),
        );
      }).toList();
    },
  ),
],

它不起作用,因为PopupMenuButton需要具有一个我们这里没有的导航器,因为AppBar在应用程序的导航器下面。

一个想法是创建一个具有自己的OverLay的附加导航器

class MyAppBar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Builder(
      builder: (context) {
        Navigator navigator = Navigator(
          ...
        )
        return navigator;
      }
    );
  }
}

但是在这种情况下,PopupMenuItem仅显示在AppBar中,从而导致或多或少只显示一个PopupMenuItem的效果。

是否可以通过AppBar的导航器更改OverLay的大小,以显示更多PopupMenuItem的大小?还是有其他合适的解决方案在所有页面上共享AppBar?

0 个答案:

没有答案