BottomNavigationBar({
Key key,
@required this.items,
this.onTap,
this.currentIndex = 0,
BottomNavigationBarType type,
this.fixedColor,
this.iconSize = 24.0,
})
main.dart
import 'package:flutter/material.dart';
import 'bottomNavigation_widget.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: MaterialApp(
title: 'Flutter bottomNavigationBar',
theme: ThemeData.light(),
home: BottomNavgationWidget(),
),
);
}
}
airplay_screen
import 'package:flutter/material.dart';
class AirplayScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(title: Text('Airplay')),
body: Center(child: Text('Airplay')),
);
}
}
home_screen
import 'package:flutter/material.dart';
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(title: Text('HOME')),
body: Center(child: Text('Home')),
);
}
}
bottomNavigation_widget.dart
import 'package:flutter/material.dart';
import 'pages/airplay_screen.dart';
import 'pages/email_screen.dart';
import 'pages/home_screen.dart';
import 'pages/pages_screen.dart';
//BottomNavigationBarItem({
// @required this.icon,
// this.title,
// Widget activeIcon,
// this.backgroundColor,
//})
//StatefulWidget 里面的东西进行变化
class BottomNavgationWidget extends StatefulWidget {
_BottomNavigationWidgetState createState() => _BottomNavigationWidgetState();
}
class _BottomNavigationWidgetState extends State<BottomNavgationWidget> {
final _BottomNavColor = Colors.blue;
int _currentIndex = 0;
List<Widget> list = [];
@override
void initState() {
//..add 用完 返回list 后面添加页面不需要加list
list
..add(HomeScreen())
..add(EmailScreen())
..add(PagesScreen())
..add(AirplayScreen());
super.initState(); //调用父类初始化方法
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: list[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
selectedFontSize: 16,
unselectedFontSize: 11,
selectedItemColor: Colors.teal,
unselectedItemColor: Colors.black,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home, color: _BottomNavColor), label: '首页'),
BottomNavigationBarItem(
icon: Icon(Icons.email, color: _BottomNavColor), label: 'Email'),
BottomNavigationBarItem(
icon: Icon(Icons.pages, color: _BottomNavColor), label: 'Pages'),
BottomNavigationBarItem(
icon: Icon(Icons.airplay, color: _BottomNavColor),
label: 'Airplay'),
],
currentIndex: _currentIndex, //哪个被选中
onTap: (int index) {
setState(() {
_currentIndex = index;
});
},
),
);
}
}