Flutter 導航設定
前言
自從flutter1.0版本釋出之後, 一直想繼續對其進行研究, 至於與react-native區別還有flutter初體驗,早在1.0版本沒釋出之前就已經試過了, 本文不在繼續說這些. 直接上手實戰,實踐中遇到問題解決問題,貌似成就感會爆棚.上github上搜尋了一下開源的flutter專案, 發現了一個對於學習flutter專案幫助學習的叫flutter go的專案比較不錯. 索性站在巨人的肩膀上,既有了UI設計, 內容實際意義也比較不錯. 就照著臨摹一個吧.當然是需要一步一步來的. 今天首先說一下專案框架的搭建問題吧.效果圖如下:
程式碼解析
class Home extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new _HomeState();
}
}
接下來是_HomeState的類方法以及定義的變數方法
class _HomeState extends State<Home> {
int _currentIndex = 0; // 控制跳轉那個底部路由
var appBarTitles = ['動態', '元件', '收藏', '手冊']; // tabbar顯示的文字
// 包含的4個子頁面其中PlaceholderWidget為頁面名稱
final List<Widget> _children = [
new PlaceholderWidget('動態'),
new PlaceholderWidget('元件'),
new PlaceholderWidget('元件'),
new PlaceholderWidget('手冊'),
];
...............
}
接下來是核心程式碼部分, 指的說的地方有一下幾點
-
1,獲取圖片資源需要在pubspec.yaml檔案中, 允許讀取其中該檔案如圖:
- 2, BottomNavigationBar的type屬性在tabbar大於3個的時候應設定為fixed狀態
- 3, BottomNavigationBar作為MaterialApp架構下的封裝的元件,具有Material Design的設計風格,如果這種分割不被您的設計師看好,讓你改變, 那就自己寫一個BottomNavigationBar吧. 沒別的好辦法.哈哈哈(如果有告訴我聲哈.拜託拜託)
@override
Widget build(BuildContext context) {
return Scaffold(
body: _children[_currentIndex],
bottomNavigationBar: new BottomNavigationBar(
onTap: onTabTapped,
currentIndex: _currentIndex,
type: BottomNavigationBarType.fixed,
items: [
new BottomNavigationBarItem(
activeIcon: getTabImage('assets/images/ic_tab_new_sel.png'),
icon: getTabImage('assets/images/ic_tab_new.png'),
title: getTabTitle(0)),
new BottomNavigationBarItem(
activeIcon: getTabImage('assets/images/ic_tab_component_sel.png'),
icon: getTabImage('assets/images/ic_tab_component.png'),
title: getTabTitle(1)),
new BottomNavigationBarItem(
activeIcon: getTabImage('assets/images/ic_tab_save_sel.png'),
icon: getTabImage('assets/images/ic_tab_save.png'),
title: getTabTitle(2)),
new BottomNavigationBarItem(
activeIcon: getTabImage('assets/images/ic_tab_mine_sel.png'),
icon: getTabImage('assets/images/ic_tab_mine.png'),
title: getTabTitle(3)),
],
iconSize: 24.0,
),
);
}
最後就是3個方法, 在build中使用到, 通俗易懂
void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
Text getTabTitle(int curIndex) {
var color;
if (curIndex == _currentIndex) {
color = Colors.green;
} else {
color = Colors.black;
}
return new Text(appBarTitles[curIndex],
style: new TextStyle(fontSize: 14.0, color: color));
}
Image getTabImage(path) {
return new Image.asset(path,
width: 24.0, height: 24.0, repeat: ImageRepeat.repeat);
}
最後的最後就是tabbar上的每個子元素的建設,, 本文中只是先建立一下, 為了看效果, 之後的更文中,會改變這段程式碼. 一共4個一個一個來.
class PlaceholderWidget extends StatelessWidget {
final String text;
PlaceholderWidget(this.text);
@override
Widget build(BuildContext context) {
return new Center(
child: new Text(text),
);
}
}
總結
首先就是不要小看這一小段程式碼,其中包含很多的知識點, 總結一下
- 1, 裡面有更新狀態程式碼
- 2, 頁面初始化傳值
- 3, 圖片資源引入
- 4, 元件與屬性的簡單用法, 以及執行機制的瞭解
結束語
下篇更新內容包括: 搜尋框, 輪播圖, 列表的應用. 如果時間充裕加上跳轉傳值與回撥吧.
相關文章
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- Flutter 導航欄AppBarFlutterAPP
- Flutter路由和導航Flutter路由
- Flutter 的路由導航Flutter路由
- (四)選單導航及路由設定路由
- Flutter 底部導航詳解Flutter
- 直播app系統原始碼,Flutter中導航欄和狀態列設定成透明APP原始碼Flutter
- Flutter 最好的導航外掛Flutter
- flutter系列之:在flutter中使用導航NavigatorFlutter
- 2018.3.30 邊框應用與導航欄設定
- Flutter開發之路由與導航Flutter路由
- flutter小記之路由和導航Flutter路由
- 用 Flutter 搭建標籤+導航框架Flutter框架
- WordPress入門08-WordPress設定導航選單
- Flutter 底部導航——BottomNavigationBar | 掘金技術徵文FlutterNavigation
- Flutter 底部不規則導航製作Flutter
- Flutter開發之導航與路由管理Flutter路由
- Flutter中App的主題和導航FlutterAPP
- 易優CMS導航欄目設定與呼叫標籤
- flutter 帶未讀訊息的底部導航Flutter
- Flutter 1.17 中的導航解密和效能提升Flutter解密
- Flutter仿閒魚底部導航欄實現Flutter
- flutter 案例 (一): 搭建介面基礎導航框架Flutter框架
- Flutter | 通過 ServiceLocator 實現無 context 導航FlutterContext
- [提問交流]能直接設定二級導航欄目嗎?
- PbootCMS模板導航設定外鏈時新視窗開啟boot
- 【導航】讀書導航
- 帝國cms編輯器設定指南:登入後臺,導航到“系統設定”>“基本設定”>“其它配置”
- 直播平臺原始碼,css移動端設定底部導航欄原始碼CSS
- flutter全屏沉浸式狀態列+標題欄|flutter凸起Tabbar導航FluttertabBar
- PbootCMS預設麵包屑導航樣式修改及自定義的設定方法boot
- 如何修改PbootCMS預設麵包屑導航樣式及自定義設定方法boot
- 定製化你的ReactNative底部導航欄React
- Mac電腦如何設定導航在選擇後繼續執行?Mac
- 在 Flutter 中實現一個浮動導航欄Flutter
- DukuanCMS_網址導航,導航網站,網址導航原始碼網站原始碼
- UE4 如何在導航體積中設定不可通過的地方
- IDEA-idea設定導航欄字型大小程式碼編輯區字型大小Idea