2017-10-06 71 views

回答

0

Scaffold现在有一个endDrawer属性,从右到左滑动。

希望这可能有助于某人。

1

如果你想显示在您的应用程序的权利酒吧/菜单或Drawer,无论是具有永久视图或临时之一。我可以通过构建我自己的自定义小部件(从Allign,ContainerColumn小部件以及使用setState来显示或隐藏基于用户交互的菜单栏来实现此目的),请参阅此简单示例。

enter image description here

我的自定义菜单窗口小部件看起来如下:

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; 
    }); 
    } 
}