我是Flutter的新手,刚刚完成了入门教程。我想创建一个侧边菜单,当您滑动时,它会从左侧显示(如Android上的Gmail)。
不幸的是,我无法在文档中找到这样的布局,而且来自flutter gallery的示例有点乱。
有人可以解释一下如何实现这样的Widget吗?
答案 0 :(得分:21)
以下是一个简单抽屉的示例(我刚刚调整了flutter create
的默认项目设置):
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('TestProject'),
),
drawer: new Drawer(
child: new ListView(
children: <Widget> [
new DrawerHeader(child: new Text('Header'),),
new ListTile(
title: new Text('First Menu Item'),
onTap: () {},
),
new ListTile(
title: new Text('Second Menu Item'),
onTap: () {},
),
new Divider(),
new ListTile(
title: new Text('About'),
onTap: () {},
),
],
)
),
body: new Center(
child: new Text(
'Center',
),
),
);
}
}
docs是一个很好的起点;)
顺便说一句:在你的脚手架中包括一个抽屉,还会为你处理菜单按钮和左侧滑动手势。
答案 1 :(得分:3)
Stocks example对Drawer
的使用稍微复杂一些。
答案 2 :(得分:0)
在脚手架中,只需指定drawer: Drawer()
示例:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: Drawer( // this will set the drawer
child: MyWidget // render your drawer Widget here
),
... // props hidden
);
}
}