如何实现从左侧滑动的侧边菜单?

时间:2017-05-01 14:39:02

标签: menu dart flutter

我是Flutter的新手,刚刚完成了入门教程。我想创建一个侧边菜单,当您滑动时,它会从左侧显示(如Android上的Gmail)。

不幸的是,我无法在文档中找到这样的布局,而且来自flutter gallery的示例有点乱。

有人可以解释一下如何实现这样的Widget吗?

3 个答案:

答案 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 exampleDrawer的使用稍微复杂一些。

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