一、文档

二、操作

在根组件Tabs下面实现左侧的侧边栏

代码

  1. // ignore_for_file: file_names
  2. import 'package:flutter/material.dart';
  3. import './tabs/Cate.dart';
  4. import './tabs/Home.dart';
  5. import './tabs/Settings.dart';
  6. class Tabs extends StatefulWidget {
  7. @override
  8. _TabsState createState() => _TabsState();
  9. }
  10. class _TabsState extends State<Tabs> {
  11. int _currentIndex = 0;
  12. List viewList = const [
  13. Home(),
  14. Cate(),
  15. Settings()
  16. ];
  17. @override
  18. Widget build(BuildContext context) {
  19. return Scaffold(
  20. appBar: AppBar(
  21. title: const Text("Flutter"),
  22. ),
  23. body: viewList[_currentIndex],
  24. bottomNavigationBar: BottomNavigationBar(
  25. currentIndex: _currentIndex,
  26. onTap: (int index){
  27. setState(() {
  28. _currentIndex = index;
  29. });
  30. },
  31. items: const [
  32. BottomNavigationBarItem(
  33. icon: Icon(Icons.home),
  34. label: "主页",
  35. ),
  36. BottomNavigationBarItem(
  37. icon: Icon(Icons.category),
  38. label: "分类",
  39. ),
  40. BottomNavigationBarItem(
  41. icon: Icon(Icons.settings),
  42. label: "设置"
  43. )
  44. ],
  45. ),
  46. drawer: Container(
  47. width: 200,
  48. child: Drawer(
  49. child: Center(
  50. child: Column(
  51. children: [
  52. DrawerHeader(
  53. child: Container(
  54. child: Column(
  55. children: [
  56. Image.asset("images/3.gif"),
  57. const Text(
  58. "启明星工作室",
  59. style: TextStyle(
  60. fontSize: 23
  61. ),
  62. )
  63. ],
  64. )
  65. )
  66. ),
  67. ListTile(
  68. leading: CircleAvatar(
  69. child: Icon(Icons.home),
  70. ),
  71. title: Text("我的空间"),
  72. ),
  73. ListTile(
  74. leading: CircleAvatar(
  75. child: Icon(Icons.people),
  76. ),
  77. title: Text("用户中心"),
  78. ),
  79. ListTile(
  80. leading: CircleAvatar(
  81. child: Icon(Icons.settings),
  82. ),
  83. title: Text("设置中心"),
  84. ),
  85. ],
  86. )
  87. )
  88. ),
  89. )
  90. );
  91. }
  92. }

样式

6A71F7BC3286B6BD5CD096E9486CC86E.jpg

注意

侧边栏的宽度是有一个默认值的
但是侧边栏组件自身并不具有宽度参数
所以如果需要修改侧边栏的宽度
那么需要给侧边栏加上一父组件,比如Container 或者 SizedBox
然后通过指定父组件的宽度来修改侧边栏的宽度

三、DrawerHeader

image.png

DrawerHeader对应的区域如下所示
image.png

有时候我们需要在这个地方展示用户的个人信息
flutter已经帮我们用一个组件实现了这个功能
那就是 UserAccountsDrawerHeader 组件

  1. UserAccountsDrawerHeader(
  2. accountName: Text("yxr"),
  3. accountEmail: Text("yxr@ctgu.edu.email"),
  4. currentAccountPicture: CircleAvatar(
  5. backgroundImage: AssetImage("images/4.jpg"),
  6. ),
  7. decoration: BoxDecoration(
  8. color: Color.fromRGBO(238, 162, 164, 1)
  9. ),
  10. ),

效果图如下所示:
F12D3B6DCD885E310ECCB1CE1381CF5F.jpg