在我们的应用中,我们希望所有页面上都具有相同的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?