Flutter 構(gòu)建App基礎(chǔ)框架

前言

Flutter相對(duì)OC來(lái)說(shuō),代碼精簡(jiǎn)很多,目標(biāo)文件也少了很多蒋川,下面我們通過(guò)代碼一一講解如何利用flutter去搭建一個(gè)App的基礎(chǔ)殼子,核心需要理解和注意的有MaterialApp()撩笆、Scaffold()尔破、appBar: AppBar( )Column浇衬、Row懒构、bottomNavigationBar等核心組件。具體用法和介紹看下列代碼和注釋耘擂。

import 'package:flutter/material.dart'; // 導(dǎo)入文件樣式
import './widgets/tabBar_widget.dart'; // 導(dǎo)入自定義文件

// main函數(shù)和OC一樣胆剧,都是程序的入口
void main() => runApp(ShopkeeperApp()); // 如果函數(shù)中只有一行方法的調(diào)用,可以去掉{}用=>指向即可
class ShopkeeperApp extends StatelessWidget { // 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false, // DEBUG條幅隱藏
      home: Home(), // 首頁(yè)顯示內(nèi)容
      // 設(shè)置主題顏色
      theme: ThemeData(
        // 導(dǎo)航條顏色
        primaryColor: Colors.cyan,
        // 設(shè)置按鈕點(diǎn)擊時(shí)的水波紋
        highlightColor:
        Color.fromRGBO(255, 255, 255, 0.5), //設(shè)置點(diǎn)擊時(shí)的背景色為白色,透明度為0.5
        splashColor: Colors.white70, // 點(diǎn)擊按鈕時(shí)的水波紋顏色為白色不透明
      ),
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DefaultTabController( // 相當(dāng)于OC中baseController
        length: 4, // 設(shè)置4個(gè)根控制器
      child: Scaffold( 
        appBar: AppBar( // 設(shè)置導(dǎo)航條
          title: Text( // 導(dǎo)航條標(biāo)題
              '智掌柜',
            style: TextStyle( // 文案樣式
              color: Colors.white,
              fontSize: 18.0
            ),
          ),
        ),
        // body: TabBarView(children: [
        //
        // ]),
        body: Center( // body是整個(gè)控制器中要顯示的內(nèi)容
          child: Column( // Column是縱向顯示 Row是橫向顯示
            children: [
              Text("這個(gè)是字符串標(biāo)簽秩霍,相當(dāng)于OC中的Label"),
              SizedBox(
                height: 10,
              ),
              Text("這個(gè)是字符串標(biāo)簽篙悯,相當(dāng)于OC中的Label"),
              SizedBox(
                height: 10,
              ),
              Text("這個(gè)是字符串標(biāo)簽,相當(dāng)于OC中的Label"),
            ],
          ),
        ),
        bottomNavigationBar: setBottomNavigationBar(), // 設(shè)置tabBar樣式
      ),
    );
  }
}
  • 其中setBottomNavigationBar()函數(shù)是自定義文件中的方法铃绒,內(nèi)容就是設(shè)置底部餐單欄的樣式和內(nèi)容鸽照。具體查看下來(lái)代碼。
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

// 這里要注意下StatefulWidget合StatelessWidget的寫(xiě)法
class setBottomNavigationBar extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _createBottomNavigationBarItem();
  }
}

// _開(kāi)頭的就是私有方法
class _createBottomNavigationBarItem extends State<setBottomNavigationBar> {
  int _CurrentIndex = 0; // 默認(rèn)選中第0個(gè)控制器
  void _onTapHandle(int index) { // 點(diǎn)擊對(duì)應(yīng)的index
    setState(() {
      print('您點(diǎn)擊的是:{$index}'); // flutter的打印方式
      _CurrentIndex = index; // 點(diǎn)擊后的賦值
    });
  }

  @override
  Widget build(BuildContext context) {
    return BottomNavigationBar( // BottomNavigationBar就是底部菜單欄的樣式組件
      currentIndex: _CurrentIndex, // 當(dāng)前顯示的索引
      onTap: _onTapHandle,// onTapitem的電機(jī)事件
      type: BottomNavigationBarType.fixed, // type表示固定顯示在底部
        items: [ // 設(shè)置tabBar的item
          BottomNavigationBarItem(icon: Icon(Icons.explore),label: 'Explore'),// BottomNavigationBarItem 具體的某個(gè)item的設(shè)置
          BottomNavigationBarItem(icon: Icon(Icons.history),label: 'History'),
          BottomNavigationBarItem(icon: Icon(Icons.list),label: 'List'),
          BottomNavigationBarItem(icon: Icon(Icons.person),label: 'Persion'),
        ],
    );
  }
}
導(dǎo)航條+底部tabBar+控制器
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颠悬,一起剝皮案震驚了整個(gè)濱河市矮燎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赔癌,老刑警劉巖诞外,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異灾票,居然都是意外死亡峡谊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)刊苍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)既们,“玉大人,你說(shuō)我怎么就攤上這事正什∩吨剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵埠忘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我馒索,道長(zhǎng)莹妒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任绰上,我火速辦了婚禮旨怠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜈块。我一直安慰自己鉴腻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布百揭。 她就那樣靜靜地躺著爽哎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪器一。 梳的紋絲不亂的頭發(fā)上课锌,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼渺贤。 笑死雏胃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的志鞍。 我是一名探鬼主播瞭亮,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼固棚!你這毒婦竟也來(lái)了统翩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玻孟,失蹤者是張志新(化名)和其女友劉穎唆缴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體黍翎,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡面徽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匣掸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟紊。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碰酝,靈堂內(nèi)的尸體忽然破棺而出霎匈,到底是詐尸還是另有隱情,我是刑警寧澤送爸,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布铛嘱,位于F島的核電站,受9級(jí)特大地震影響袭厂,放射性物質(zhì)發(fā)生泄漏墨吓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一纹磺、第九天 我趴在偏房一處隱蔽的房頂上張望帖烘。 院中可真熱鬧,春花似錦橄杨、人聲如沸秘症。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乡摹。三九已至,卻和暖如春采转,著一層夾襖步出監(jiān)牢的瞬間趟卸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锄列,地道東北人图云。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像邻邮,于是被迫代替她去往敵國(guó)和親竣况。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容