Flutter的橫空出世,很大程度上下降了移動應用的開發成本;我是一名苦逼的iOS開發者,兼職寫點Android開發,對Flutter的出現比通常人要敏感不少,在此以前我的的見解是跨平臺沒什麼前景,學習成本高的同時,性能並非很滿意;在接觸Flutter以後,這一想法拋之腦後,瞬間來了興趣,對於有開發經驗的童鞋來講,學習起來一點也不難,特別是Android開發的,由於編譯器能夠直接用Android Studio,上手特別快;運行起來也很流暢;這些都是愛好的開始;bash
首先來講一下iOS裏面的UITabBarController 在Flutter裏面有對應的控件BottomNavigationBar很是的方便,幾句代碼輕輕鬆鬆達到iOS和Android雙端效果統一,主要代碼以下app
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/pages/HomePage.dart';
import 'package:flutter_app/pages/ShopPage.dart';
import 'package:flutter_app/pages/MyInfoPage.dart';
class Tabbar extends StatefulWidget{
@override
State<StatefulWidget> createState() => TabbarState();
}
///tabbar的三個子控制器
class TabbarState extends State<Tabbar> {
int _currentIndex = 0;
final List<Widget> _children = [
HomePage(),
Shoppage(),
MyInfoPage()
];
//建立BottomNavigationBar而且監聽改變的currentIndex
@override
Widget build(BuildContext context) {
return new Scaffold(
body: _children[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
onTap: onTabTapped,
items: [
BottomNavigationBarItem(
title: new Text("Home"), icon: new Icon(Icons.home)),
BottomNavigationBarItem(
title: new Text("List"), icon: new Icon(Icons.list)),
BottomNavigationBarItem(
title: new Text("Message"), icon: new Icon(Icons.message)),
],
),
);
}
//點擊事件
void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
}
複製代碼
Tabbar 是本身建立封裝的類,方便組件化管理;主要是實現tabbar的功能cupertino.dart
和material.dart
是Flutter自帶的文件;其餘HomePage.dart
/ShopPage.dart
/MyInfoPage.dart
爲本身建立的三個類,至關於iOS裏面的VC
和Android裏面的Activity
用於展現TabbarItem的內容;至於怎麼調用就更加的簡單了,下面是Main文件調用的代碼:less
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
//調用tabbar展現
home: Tabbar(),
);
}
}
複製代碼
調用的代碼home: Tabbar(),
就是這麼簡單粗暴,核心代碼不超過50行; 效果圖以下ide
上圖中填充的其餘內容想了解的能夠關注我哦, 連載中。。。組件化