我们在主文件为 main.dart 文件,里面有一个人入口文件 runApp 。
一般我们写页面的时候需要分模块来写。
页面入口,我首先拿底部一个【导航条】导航条切换。
main.dart 文件
import 'package:flutter/material.dart';import 'package:flutter_app/app/app_scence.dart';void main() {runApp(AppScene());}
app_scence.dart 文件
import 'package:flutter/material.dart';import 'package:flutter_app/app/root_scence.dart';import 'package:provider/provider.dart';import 'app_color.dart';class AppScene extends StatelessWidget {Widget build(BuildContext context){print("根本构建:$context");// 使用状态管理return MultiProvider(providers : [// 这里应该是通知吧。ChangeNotifierProvider(create: (value){print("根部执行状态管理!");} )],child: MaterialApp(title : "AYuWei",debugShowCheckedModeBanner:false, // 测试的时候不显示debug图标。theme: ThemeData(primaryColor : Color(0xff437DFA),dividerColor : Color(0xffEEEEEE),scaffoldBackgroundColor : AppColor.paper,textTheme: TextTheme(bodyText1 : TextStyle( color : AppColor.darkGrey ))),home: RootScene(),));}}/*** 状态管理都需要使用到 provider包。*/
app根部构建RootScene, 文件路径root_scence.dart
import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';import 'package:flutter_app/pages/exchange/exchange_scene.dart';import 'package:flutter_app/pages/home/home.dart';import 'package:flutter_app/pages/my/my_scene.dart';import 'package:flutter_app/pages/profit/profit_scene.dart';import 'package:flutter_app/pages/promotion/promotion_scene.dart';class RootScene extends StatefulWidget {@override_RootScene createState() => _RootScene();}class _RootScene extends State<RootScene>{int _tabIndex = 0;int _currentIndex = 0; // 当前底部导航条的索引下表。// 存储切换页面final List<Widget> _children = [HomeScene(), ExchangeScene(), ProfitScene(), PromotionScene(), MyScence() ];Widget build(BuildContext context){// 存储页面底部导航条信息final List<BottomNavigationBarItem> _list = <BottomNavigationBarItem>[BottomNavigationBarItem(icon: Icon(Icons.home),title: Text("首页")),BottomNavigationBarItem(icon: Icon(Icons.attach_file),title: Text("委托购买")),BottomNavigationBarItem(icon: Icon(Icons.attach_money),title: Text("收益")),BottomNavigationBarItem(icon: Icon(Icons.people),title: Text("推广")),BottomNavigationBarItem(icon: Icon(Icons.tag_faces),title: Text("我的")),];return Scaffold(body: Container(child : _children[_tabIndex],),// 底部导航条。bottomNavigationBar: BottomNavigationBar(items: _list,type : BottomNavigationBarType.fixed, // fixed 将导航条固定在底部。onTap: onTapTapped, // 当点击的时候获取下标currentIndex: _currentIndex,// backgroundColor: Colors.grey[400] // 设置背景色// 还有详情请查看源码。),);}void onTapTapped(index){print(index);setState(() {_currentIndex = index;_tabIndex = index;});}}
my_scene.dart 文件
import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';class MyScence extends StatefulWidget {@override_MyScence createState() => _MyScence();}class _MyScence extends State<MyScence>{Widget build(BuildContext context){return Scaffold(appBar: AppBar(title: Text("我的"),centerTitle: true, // 标题是否居中backgroundColor: Colors.green[400], // 头部背景色。),body: ListView(children : <Widget>[Text("我的页面", textAlign: TextAlign.center ),]),);}}
一共有五个页面,这个是我的页面,其余的结构类似。
写了那么多还是拿图说话吧。
