目录
效果展示
实现步骤
1.创建切换的三个页面
这里由于其他两个页面只是显示的文字不一样因此我这里就只展示一个页面的代码
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Center(
child: Text("首页"),
);
}
}
2.添加BottomNavigationBar
这里实现底部导航是用的BottomNavigationBar,因此我们需要在主页面中加入BottomNavigationBar,代码如下(注意:要在Scaffold中添加)
import 'package:bottomnavigationbar_demo/pages/HomePage.dart';
import 'package:bottomnavigationbar_demo/pages/MinePage.dart';
import 'package:bottomnavigationbar_demo/pages/OrderPage.dart';
import 'package:flutter/material.dart';
void main()=>runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MainPage(),
);
}
}
class MainPage extends StatefulWidget {
MainPage({Key? key}) : super(key: key);
@override
_MainPageState createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
var pages = [HomePage(),OrderPage(),MinePage()];
var currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("底部导航"),
),
body: pages[currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: currentIndex,
type: BottomNavigationBarType.fixed,
onTap: (index){
setState(() {
currentIndex = index;
});
},
items: [
BottomNavigationBarItem(
backgroundColor: Colors.pink,
icon: Icon(Icons.home),
label: "首页"
),
BottomNavigationBarItem(
backgroundColor: Colors.green,
icon: Icon(Icons.list),
label: "订单"
),
BottomNavigationBarItem(
backgroundColor: Colors.orange,
icon: Icon(Icons.person),
label: "我的"
),
],
),
);
}
}
这里BottomNavigationBar必须要设置items,items里面是多个BottomNavigationBarItem,BottomNavigationBarItem可以设置图标和标题同时也可以设置背景颜色,这里需要注意的是BottomNavigationBar的currentIndex是当前选中的Tab的索引,因此必须要设置才能看到点击后的切换效果,另外BottomNavigationBar的type属性是设置选择的效果,就如同开头展示的那两种效果,其中BottomNavigationBarType.fixed是普通的效果,BottomNavigationBarType.shifting是比较花哨的效果,设置了花哨的效果必须要给BottomNavigationBarItem设置背景颜色才能看到效果,为了方便查看,下面以表格的形式展示出重要的属性:
BottomNavigationBar
属性 | 说明 |
---|---|
items | 底部导航栏的显示项(BottomNavigationBarItem) |
onTap | 选择TAB时的回调 |
currentIndex | 当前的索引 |
type | 选择TAB时的效果(普通:BottomNavigationBarType.fixed,花哨:BottomNavigationBarType.shifting) |
fixedColor | 底部导航栏type为fixed时导航栏的颜色,如果为空的话默认使用ThemeData.primaryColor |
BottomNavigationBarItem
属性 | 说明 |
---|---|
icon | 要显示的图标控件(Icon) |
label | 显示的标题 |
backgroundColor | BottomNavigationBarType为shifting时的背景颜色 |
网友评论