首先我们写一个侧边栏工具类,示例如下:
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); // 关闭侧边栏
// 添加导航逻辑
},
),
],
),
);
}
}
然后我们在需要的地方引用这个侧边栏页面,示例如下
Scaffold(
appBar: AppBar(
title: Text('侧边栏示例'), // 自定义标题
),
drawer: Sidebar(), // 使用自定义的侧边栏
body: Center(
child: Text('主页内容'),
),
),
效果如下所示
如果想将一个类改写成侧边栏工具类,只需要用Drawer将整个页面进行包裹一下,然后在使用页面的Scaffold里面加上drawer这个标签引用这个类,然后将点击跳转这个类的方法改写成Scaffold.of(context).openDrawer();即可完成快速构建侧边栏。