App開發(fā)之基礎(chǔ)頁面搭建
搭建客戶端基礎(chǔ)頁面
引入資源
跟目錄創(chuàng)建assets,pubspec.yaml中引入資源
assets:assets/tabs/
圖片資源在阿里的confont中搜索。
創(chuàng)建TabsPage
import 'package:flutter/material.dart';import 'package:flutter_songbei/custom/buttom_bat_item.dart';import '../app_theme.dart';import 'tabs/found_tab.dart';import 'tabs/home_tab.dart';import 'tabs/message_tab.dart';import 'tabs/my_tab.dart';class TabsPage extends StatefulWidget {StatecreateState() {return _TabsState();}}class _TabsState extends State<TabsPage> {int _selectedIndex = 0;Listpages = List (); void initState() {super.initState();pages..add(HomeTab())..add(FoundTab())..add(MessageTab())..add(MyTab());}Widget build(BuildContext context) {return Scaffold(bottomNavigationBar: BottomAppBar(color: Colors.white,shape: CircularNotchedRectangle(),child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround,children:[ BottomBarItem(_selectedIndex == 0, 'assets/tabs/home.png', '首頁',() {_onItemTapped(0);}),BottomBarItem(_selectedIndex == 1, 'assets/tabs/found.png', '發(fā)現(xiàn)',() {_onItemTapped(1);}),SizedBox(width: 30,),BottomBarItem(_selectedIndex == 2, 'assets/tabs/message.png', '消息',() {_onItemTapped(2);}),BottomBarItem(_selectedIndex == 3, 'assets/tabs/my.png', '我的', () {_onItemTapped(3);})],),),body: pages[_selectedIndex],floatingActionButton: FloatingActionButton(heroTag: 'circleTag',backgroundColor: AppTheme.mainColor,child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [Image(image: AssetImage('assets/tabs/add.png'),width: 30,height: 30,color: Colors.white,),]),onPressed: () {},),floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,);}void _onItemTapped(int index) {setState(() {_selectedIndex = index;});}}
在main中設(shè)置home為TabsPage
在pages/tabs/目錄下創(chuàng)建四個頁面?HomeTab,FoundTab,MessageTab,MyTab
import 'package:flutter/material.dart';import 'package:flutter_songbei/app_theme.dart';class HomeTab extends StatefulWidget {StatecreateState() {return _PageState();}}class _PageState extends State<HomeTab>{Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('首頁'),backgroundColor: AppTheme.mainColor,),);}}
因為底部按鈕中有中間凸起按鈕,所以我們采用BottomAppBar,封裝BottomBarItem
import 'package:flutter/material.dart';class BottomBarItem extends StatelessWidget{Color actionColor = Colors.black87;Color menuColor = Color(0xff707070);bool isSelect;String assetName;String title;Function onItem;BottomBarItem(this.isSelect,this.assetName,this.title,this.onItem);@overrideWidget build(BuildContext context) {return Container(padding: EdgeInsets.fromLTRB(0, 5, 0, 5),height: 60,child: InkWell(child: Column(children:[ Image(image: AssetImage(assetName),color: isSelect?actionColor:menuColor,width: 28,height: 28,),Text(title,style: TextStyle(color:isSelect?actionColor:menuColor))],),onTap: (){this.onItem();},),);}}
整體目錄

運行效果

基礎(chǔ)頁面至此搭建完成
評論
圖片
表情
