flutter 快速实现侧边栏

首先我们写一个侧边栏工具类,示例如下:

Dart 复制代码
import 'package:flutter/material.dart';

class Sidebar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        padding: EdgeInsets.zero,
        children: <Widget>[
          UserAccountsDrawerHeader(
            accountName: Text("用户名"),
            accountEmail: Text("用户邮箱"),
            currentAccountPicture: CircleAvatar(
              backgroundColor: Colors.white,
              child: Text(
                "U",
                style: TextStyle(fontSize: 40.0, color: Colors.blue),
              ),
            ),
          ),
          ListTile(
            leading: Icon(Icons.home),
            title: Text('首页'),
            onTap: () {
              Navigator.pop(context); // 关闭侧边栏
              // 添加导航逻辑
            },
          ),
          ListTile(
            leading: Icon(Icons.settings),
            title: Text('设置'),
            onTap: () {
              Navigator.pop(context); // 关闭侧边栏
              // 添加导航逻辑
            },
          ),
          ListTile(
            leading: Icon(Icons.info),
            title: Text('关于'),
            onTap: () {
              Navigator.pop(context); // 关闭侧边栏
              // 添加导航逻辑
            },
          ),
        ],
      ),
    );
  }
}

然后我们在需要的地方引用这个侧边栏页面,示例如下

Dart 复制代码
Scaffold(
            appBar: AppBar(
              title: Text('侧边栏示例'), // 自定义标题
            ),
            drawer: Sidebar(), // 使用自定义的侧边栏
            body: Center(
              child: Text('主页内容'),
            ),
          ),

效果如下所示

如果想将一个类改写成侧边栏工具类,只需要用Drawer将整个页面进行包裹一下,然后在使用页面的Scaffold里面加上drawer这个标签引用这个类,然后将点击跳转这个类的方法改写成Scaffold.of(context).openDrawer();即可完成快速构建侧边栏。

相关推荐
LucianaiB10 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
好的佩奇11 小时前
Dart 之扩展类型
android·flutter·dart
excel11 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易12 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰14 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒14 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手14 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz14 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易15 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么16 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质