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();即可完成快速构建侧边栏。

相关推荐
Alice-YUE20 小时前
AI对话为什么需要RAG
前端·语言模型·rag
C澒20 小时前
IntelliPro 企业级产研协作平台:低代码实时预览与可视化编辑技术调研
前端·低代码·ai编程
霍理迪20 小时前
TS类型断言和类型守卫
前端
木斯佳21 小时前
前端八股文面经大全:京东前端实习一面(2026-04-16)·面经深度解析
前端
chenxu98b21 小时前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
liulian091621 小时前
【Flutter For OpenHarmony】Flutter 三方库 flutter_secure_storage 的鸿蒙化适配指南
flutter·华为·学习方法·harmonyos
Bigger21 小时前
第十章:我是如何剖析 CLI 里的终极 Agent 能力的(电脑控制与浏览器接管)
前端·claude·源码阅读
coder_liluyao21 小时前
JS动画函数的封装(很实用)
javascript
kyriewen21 小时前
代码写成一锅粥?这5种设计模式让你的项目“起死回生”
前端·javascript·设计模式
蓝色的雨21 小时前
基于Babylonjs的WEBGPU渲染器源码架构
前端·javascript