一、创建pages文件目录,根页面为Root

二、Home首页简单结构代码(其他页面同理)
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
backgroundColor: Colors.blueGrey,
title: const Text(
"首页",
style: TextStyle(fontSize: 14, color: Colors.white),
),
),
body: const Center(
child: Text(
"首页页面",
style: TextStyle(color: Colors.red, fontSize: 20),
),
),
);
}
}
三、root文件代码
import 'package:flutter/material.dart';
import 'package:fkapp/pages/Home/home_page.dart';
import 'package:fkapp/pages/Categroy/categroy_page.dart';
import 'package:fkapp/pages/Cart/cart_page.dart';
import 'package:fkapp/pages/My/my_page.dart';
class rootPages extends StatefulWidget {
const rootPages({super.key});
@override
State<rootPages> createState() => _rootPagesState();
}
class _rootPagesState extends State<rootPages> {
List pages = [HomePage(), CategoryPage(), CartPage(), MyPage()];
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: pages[_currentIndex],
bottomNavigationBar: Theme(
data: ThemeData(
splashColor: Colors.transparent,
highlightColor: Colors.transparent),
child: BottomNavigationBar(
selectedFontSize: 14,
unselectedFontSize: 14,
selectedItemColor: Colors.green,
unselectedItemColor: Colors.grey,
currentIndex: _currentIndex,
onTap: (int index) {
setState(() {
_currentIndex = index;
});
},
type: BottomNavigationBarType.fixed,
items: [
BottomNavigationBarItem(
icon: Image.asset(
'assets/home_nor.png',
gaplessPlayback: true,
),
activeIcon: Image.asset(
'assets/home_sel.png',
gaplessPlayback:
true,
),
label: "首页"),
BottomNavigationBarItem(
icon: Image.asset(
'assets/category_nor.png',
gaplessPlayback: true,
),
activeIcon: Image.asset(
'assets/category_sel.png',
gaplessPlayback: true,
),
label: "分类"),
BottomNavigationBarItem(
icon: Image.asset(
'assets/cart_nor.png',
gaplessPlayback: true,
),
activeIcon: Image.asset(
'assets/cart_sel.png',
gaplessPlayback: true,
),
label: "购物车"),
BottomNavigationBarItem(
icon: Image.asset(
'assets/mine_nor.png',
gaplessPlayback: true,
),
activeIcon: Image.asset(
'assets/mine_sel.png',
gaplessPlayback: true,
),
label: "我的"),
],
)),
);
}
}
4、main.dart页面
import 'package:fkapp/pages/Root/page_root.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const rootPages() ,
);
}
}