如何实现正确的导航栏颤动?
答
如果你想显示在您的应用程序的权利酒吧/菜单或Drawer
,无论是具有永久视图或临时之一。我可以通过构建我自己的自定义小部件(从Allign
,Container
和Column
小部件以及使用setState
来显示或隐藏基于用户交互的菜单栏来实现此目的),请参阅此简单示例。
我的自定义菜单窗口小部件看起来如下:
class RightNavigationBar extends StatefulWidget {
@override
_RightNavigationBarState createState() => new _RightNavigationBarState();
}
class _RightNavigationBarState extends State<RightNavigationBar> {
@override
Widget build(BuildContext context) {
return new Align(
alignment: FractionalOffset.centerRight,
child: new Container(
child: new Column(
children: <Widget>[
new Icon(Icons.navigate_next),
new Icon(Icons.close),
new Text ("More items..")
],
),
color: Colors.blueGrey,
height: 700.0,
width: 200.0,
),
);
}
}
然后,当用户按下菜单icon
,我的自定义RightNavigationBar
小部件内setState
创建的对象:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
var _myRightBar = null;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
actions: [new IconButton(
icon: new Icon (Icons.menu), onPressed: _showRightBar)
],
title: new Text("Right Navigation Bar Example"),
),
body: _myRightBar
);
}
_showRightBar() {
setState(() {
_myRightBar == null
? _myRightBar = new RightNavigationBar()
: _myRightBar = null;
});
}
}