BottomNavigationBar 是底部导航条,可以让我们定义底部Tab切换,bottomNavigationBar是Scaffold组件的参数。
这是Flutter BottomNavigationBar 自定义底部导航条实现底部页面tab切换的效果
看视频的话去B站找 Dart Flutter教程,或者百度搜索 大地老师Flutter教程
items List 底部导航条按钮集合
iconSize icon
currentIndex 默认选中第几个
onTap 选中变化回调函数
fixedColor 选中的颜色
type
BottomNavigationBarType.fixed
BottomNavigationBarType.shifting
Scaffold(
appBar: AppBar(
title: Text('Flutter Demo')
),
body: this._pagesList[this._curentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _curentIndex,
onTap: _changePage,
fixedColor: Colors.black,
type: BottomNavigationBarType.fixed,
items: [
BottomNavigationBarItem(
title:Text("首页"),
icon:Icon(Icons.home)
),
BottomNavigationBarItem(
title:Text("分类"),
icon:Icon(Icons.category)
),
BottomNavigationBarItem(
title:Text("设置"),
icon:Icon(Icons.settings)
),
],
),
)
main.dart
import 'package:flutter/material.dart';
import 'pages/Tabs.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home:Tabs()
);
}
}
tabs.dart
import 'package:flutter/material.dart';
import 'tabs/Home.dart';
import 'tabs/Category.dart';
import 'tabs/Setting.dart';
class Tabs extends StatefulWidget {
Tabs({Key key}) : super(key: key);
_TabsState createState() => _TabsState();
}
class _TabsState extends State {
int _currentIndex=0;
List _pageList=[
HomePage(),
CategoryPage(),
SettingPage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Flutter Demo"),
),
body: this._pageList[this._currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: this._currentIndex, //配置对应的索引值选中
onTap: (int index){
setState(() { //改变状态
this._currentIndex=index;
});
},
iconSize:36.0, //icon的大小
fixedColor:Colors.red, //选中的颜色
type:BottomNavigationBarType.fixed, //配置底部tabs可以有多个按钮
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text("首页")
),
BottomNavigationBarItem(
icon: Icon(Icons.category),
title: Text("分类")
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
title: Text("设置")
)
],
),
);
}
}
Home.dart
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State {
@override
Widget build(BuildContext context) {
return Text("我是首页组件");
}
}
Category.dart
import 'package:flutter/material.dart';
class CategoryPage extends StatefulWidget {
CategoryPage({Key key}) : super(key: key);
_CategoryPageState createState() => _CategoryPageState();
}
class _CategoryPageState extends State {
@override
Widget build(BuildContext context) {
return Text("分类");
}
}
Setting.dart
import 'package:flutter/material.dart';
class SettingPage extends StatefulWidget {
SettingPage({Key key}) : super(key: key);
_SettingPageState createState() => _SettingPageState();
}
class _SettingPageState extends State {
@override
Widget build(BuildContext context) {
return ListView(
children: [
ListTile(
title: Text("我是一个文本"),
),
ListTile(
title: Text("我是一个文本"),
),
ListTile(
title: Text("我是一个文本"),
),
ListTile(
title: Text("我是一个文本"),
)
],
);
}
}