Flutter组件————Scaffold

时间:2024-12-21 11:25:47
class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int pageIndex = 0; //所有右侧行为按钮 List<Widget> actionList = const [ Icon(Icons.social_distance), SizedBox( width: 30, ), Icon(Icons.cyclone), SizedBox( width: 30, ), Icon(Icons.manage_accounts), SizedBox( width: 40, ) ]; List<Widget> pageList = const [ Text("首页"), Text("新增"), Text("用户"), ]; void floatBtnFunc() { debugPrint("点击了悬浮按钮"); HapticFeedback.vibrate(); } Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, //背景颜色 foregroundColor: const Color.fromARGB(135, 226, 5, 255), // leading: const Icon(Icons.accessibility_new_rounded), //左侧按钮 title: const Text("Flutter 示例"), //标题 // actions: actionList, //右侧按钮 elevation: 10, //下方阴影 shadowColor: const Color.fromARGB(136, 0, 225, 255), //阴影颜色 centerTitle: true, // 标题是否居中(ios默认居中,Android默认居左) surfaceTintColor: const Color.fromARGB(172, 249, 128, 0), //表面颜色 toolbarHeight: 50, //顶部栏高度 iconTheme: const IconThemeData( size: 20, color: Color.fromARGB(207, 255, 251, 0)), //控制内部元素样式 primary: true, // 是否显示主要按钮 titleSpacing: 10, //标题内边距 bottom: const TabBar(tabs: [ Tab(icon: Icon(Icons.directions_car)), Tab(icon: Icon(Icons.directions_transit)), Tab(icon: Icon(Icons.directions_bike)), ]), //顶部栏底部按钮 shape: const RoundedRectangleBorder( borderRadius: BorderRadius.vertical(bottom: Radius.circular(15)) //顶部栏底部按钮样式 ), ), //顶部栏 body: Center( child: ListView( padding: const EdgeInsets.only(top: 15), children: [ Row( children: [pageList[pageIndex]], ) ], ), ), floatingActionButton: FloatingActionButton( onPressed: floatBtnFunc, //点击事件 tooltip: "悬浮按钮", //长按提示信息 backgroundColor: Colors.blue, //背景颜色 foregroundColor: Colors.white, // 内部组件颜色 elevation: 10, //阴影 shape: ShapeBorder.lerp( const CircleBorder(), const CircleBorder(), 0.5), //按钮形状 mini: false, //是否小尺寸 hoverColor: Colors.green, //悬浮颜色 splashColor: Colors.yellow, //点击颜色 focusColor: Colors.red, //获取焦点颜色 autofocus: true, //是否自动获取焦点 clipBehavior: Clip.hardEdge, //裁剪方式 child: const Icon(Icons.info), // //按钮内部组件 ), //浮动按钮 floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, //浮动按钮位置 bottomNavigationBar: BottomNavigationBar( items: const <BottomNavigationBarItem>[ BottomNavigationBarItem( icon: Icon(Icons.home), //图标 label: "首页", //标签 tooltip: "首页", //长按提示信息 backgroundColor: Colors.blueAccent, //背景颜色 activeIcon: Icon(Icons.home_filled), //选中图标 ), BottomNavigationBarItem(icon: Icon(Icons.add), label: "新增"), BottomNavigationBarItem(icon: Icon(Icons.verified_user), label: "用户"), ], //底部导航栏 currentIndex: pageIndex, //当前页面索引 onTap: (index) { setState(() { pageIndex = index; }); }, //点击事件 type: BottomNavigationBarType.fixed, //导航栏的类型 iconSize: 25, //图标大小 elevation: 20, //阴影 selectedFontSize: 12, //选中字体大小 unselectedFontSize: 12, //未选中字体大小 selectedItemColor: Colors.blue, //选中颜色 unselectedItemColor: Colors.black, //未选中颜色 showUnselectedLabels: true, //是否显示未选中的标签 selectedLabelStyle: const TextStyle(color: Colors.blue), //选中文本样式 unselectedLabelStyle: const TextStyle(color: Colors.black), //未选中文本样式 backgroundColor: const Color.fromARGB(255, 99, 255, 247), showSelectedLabels: true, //分别控制是否显示选中和未选中的标签文本,默认都是显示的 ), backgroundColor: Colors.white24, //背景颜色 persistentFooterButtons: const [Icon(Icons.add_a_photo_outlined),Icon(Icons.add_alarm_rounded)], //底部固定按钮 drawer: Drawer(child: ListView(children: const [Text("侧边栏")],),), //左侧边栏(不可以使用appBar的leader) endDrawer: Drawer(child: ListView(children: const [Text("右侧侧边栏")],),) // 右侧边栏(不可以使用appBar的actions) ); } }