1
| import 'package:flutter/material.dart'; |
| |
| void main() => runApp(MyApp()); |
| |
| class MyApp extends StatelessWidget { |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| home: DashPage(), |
| ); |
| } |
| } |
| |
| class DashPage extends StatefulWidget { |
| @override |
| _DashPageState createState() => _DashPageState(); |
| } |
| |
| class _DashPageState extends State<DashPage> { |
| @override |
| Widget build(BuildContext context) { |
| return DefaultTabController( |
| length: 4, |
| child: Scaffold( |
| bottomNavigationBar: TabBar( |
| tabs: <Widget>[ |
| Tab(icon: Icon(Icons.home), text: "Home"), |
| Tab(icon: Icon(Icons.search), text: "Search"), |
| Tab(icon: Icon(Icons.file_download), text: "Download"), |
| Tab(icon: Icon(Icons.list), text: "More"), |
| ], |
| unselectedLabelColor: Colors.grey, |
| labelColor: Colors.blue, |
| ), |
| body: TabBarView( |
| children: <Widget>[ |
| Center(child: Text('Home Page')), |
| Center(child: Text('Search Page')), |
| Center(child: Text('Download Page')), |
| Center(child: Text('More Page')), |
| ], |
| ), |
| ), |
| ); |
| } |
| } |
2
| import 'package:flutter/material.dart'; |
| |
| void main() => runApp(MyApp()); |
| |
| class MyApp extends StatelessWidget { |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| home: DashPage(), |
| ); |
| } |
| } |
| |
| class DashPage extends StatefulWidget { |
| @override |
| _DashPageState createState() => _DashPageState(); |
| } |
| |
| class _DashPageState extends State<DashPage> { |
| int _currentIndex = 0; |
| final PageController _controller = PageController(); |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| bottomNavigationBar: BottomNavigationBar( |
| type: BottomNavigationBarType.fixed, |
| currentIndex: _currentIndex, |
| fixedColor: Colors.purple, |
| onTap: (int index) { |
| setState(() { |
| _currentIndex = index; |
| _controller.jumpToPage(index); |
| }); |
| }, |
| items: <BottomNavigationBarItem>[ |
| BottomNavigationBarItem( |
| icon: Icon(Icons.home), |
| activeIcon: Icon(Icons.home), |
| title: Text("Home")), |
| BottomNavigationBarItem( |
| icon: Icon(Icons.search), |
| activeIcon: Icon(Icons.search), |
| title: Text("Search")), |
| BottomNavigationBarItem( |
| icon: Icon(Icons.file_download), |
| activeIcon: Icon(Icons.file_download), |
| title: Text("Search")), |
| BottomNavigationBarItem( |
| icon: Icon(Icons.list), |
| activeIcon: Icon(Icons.list), |
| title: Text("More")), |
| ], |
| ), |
| body: PageView( |
| controller: _controller, |
| onPageChanged: (int index) { |
| setState(() { |
| _currentIndex = index; |
| }); |
| }, |
| children: <Widget>[ |
| Center(child: Text('Home Page')), |
| Center(child: Text('Search Page')), |
| Center(child: Text('Download Page')), |
| Center(child: Text('More Page')), |
| ], |
| ), |
| ); |
| } |
| } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!