flutter tabbar创建与显示
2024-09-02 21:03:01
效果图
main.dart
import 'package:flutter/material.dart';
import 'pages/index_page.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '百姓生活+',
home: IndexPage(),
theme: ThemeData.light(),
);
}
}
indexPage.dart
import 'package:flutter/material.dart';
import 'home_page.dart';
import 'category_page.dart';
import 'cart_page.dart';
import 'person_page.dart';
class IndexPage extends StatefulWidget {
@override
_IndexPageState createState() => _IndexPageState();
}
class _IndexPageState extends State<IndexPage> {
final List<BottomNavigationBarItem> bottomTabs = [
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('首页')
),
BottomNavigationBarItem(
icon: Icon(Icons.category),
title: Text('分类')
),
BottomNavigationBarItem(
icon: Icon(Icons.shopping_cart),
title: Text('购物车')
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
title: Text('我的')
)
];
final List tabBodies = [
HomePage(),
CategoryPage(),
CartPage(),
PersonPage()
];
int currentIndex = 0;
var currentPage;
void initState(){
currentPage = tabBodies[currentIndex];
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: currentPage,
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: currentIndex,
items: bottomTabs,
onTap: (index){
setState(() {
currentIndex = index;
currentPage = tabBodies[index];
});
},
)
);
}
}
home_page.dart
import 'package:flutter/material.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('HomePage')),
);
}
}
category_page.dart
import 'package:flutter/material.dart';
class CategoryPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('CategoryPage')),
);
}
}
cart_page.dart
import 'package:flutter/material.dart';
class CartPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('CartPage')),
);
}
}
person_page.dart
import 'package:flutter/material.dart';
class PersonPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PersonPage')),
);
}
}
最新文章
- MVC CodeFirst简单的创建数据库(非常详细的步骤)
- PHP安全之Web攻击
- 两种JavaScript的AES加密方式(可与Java相互加解密)
- Android只能动态注册的广播Action
- 【BZOJ-3747】Kinoman 线段树
- 【jQuery】百分比自适应屏幕轮播图特效
- WCF绑定和行为在普通应用和SilverLight应用一些对比
- js中的正则表达式
- HTML CSS——margin和padding的学习
- location 、history
- 了解 hadoop
- Free Editor
- MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (1)
- Gradient boosting
- JS 删除Array对象中的元素。
- golang 请求带验证信息的坑
- activemq生产者和消费者的双向通信
- [python] os.path模块常用方法汇总
- 升级IOS8游戏上传自定义头像功能失效的问题
- 10gocm-&;gt;session3-&;gt;数据备份与恢复
热门文章
- enum:python实现枚举也很优雅
- zabbix 启到不起来:active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: [111] Connection refused)
- 完美解决Mysql的Access denied for user &#39;root&#39;@&#39;%的&#39;问题
- Share:《THE ULTIMATE XSS PROTECTION CHEATSHEET FOR DEVELOPERS》
- mysql数据库表自增ID批量清零 AUTO_INCREMENT = 0
- DevExpress ASP.NET Core v19.1版本亮点:Pivot Grid控件等
- linux学习:【第3篇】之常见命令2
- Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02
- qt5--自定义控件封装
- k8s-for批量拉取国内镜像并做tag标签