Flutter drawer侧滑栏实现

侧滑栏对于大部分App来说都是经常用到的,接下来我们来一步步的实现flutter的侧滑栏效果。这里需要使用flutter提供的
Drawer和DrawerHeader控件,DrawerHeader通常用作侧滑栏的头部控件,比如用户头像等。

Drawer构造方法及常用属性简介

const Drawer({
    Key key,
    this.elevation = 16.0,
    this.child,
    this.semanticLabel,
  })

该控件常用的属性就是child属性,child就是drawer里面显示的具体子item。

属性名属性值类型说明
childWidget类型要显示的所有子项,常用ListView进行实现

DrawerHeader构造方法及常用属性简介

const DrawerHeader({
    Key key,
    this.decoration,
    @required this.child,
  })
属性名属性值类型说明
decorationDecoration类型装饰背景颜色等,常用BoxDecoration实现
childWidget类型要显示的子项,常用CircleAvatar实现用户头像

drawer的简单实现

drawer侧滑栏通常通过Scaffold控件下drawer属性进行实现,下面通过代码进行实现。

drawer: Drawer(
        child: ListView(
          children: <Widget>[
            DrawerHeader( // drawer的头部控件
              decoration: BoxDecoration(
                color: Colors.blue,
              ),
              child: UnconstrainedBox( // 解除父级的大小限制
                child: CircleAvatar(
                  radius: 40,
                  backgroundColor: Colors.transparent,
                  backgroundImage: NetworkImage(
                    'https://i.loli.net/2020/01/21/4t5hLOoF3YeKSHT.png',
                  ),
                ),
              ),
            ),
            ListTile( // 子项
              leading: Icon(Icons.settings),
              title: Text("设置"),
              onTap: _popDrawer,
            ),
            ListTile( // 子项
              leading: Icon(Icons.person),
              title: Text("个人"),
              onTap: _popDrawer,
            ),
            ListTile( // 子项
              leading: Icon(Icons.feedback),
              title: Text("反馈"),
              onTap: _popDrawer,
            ),
          ],
        ),
      ),

其中的_popDrawer是关闭侧滑栏的方法。上述实现的效果图如下:

get _popDrawer => () => Navigator.pop(context);

1.PNG

drawer优化

  • 此时我们的drawer顶部有个灰色的条,高度为状态栏的高度,十分的难看,我们只需要在Drawer的child属性对应的
    控件ListView里指定padding值为0即可。效果图如下:

drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero, // 此处能解决顶部为灰色的问题
          children: <Widget>[
            ...
          ],
        ),
      ),

2.PNG

  • 如果我们想禁用滑动滑出侧边栏,只通过左上角点击弹出侧边栏的话,也只需要添加一个属性即可。

drawerEdgeDragWidth: 0.0, // 禁止通过滑动打开drawer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值