Flutter 學(xué)習(xí)筆記(一)

一、刪除掉右上角debug標(biāo)志

debugShowCheckedModeBanner: false,

二颁井、顯示圖片

顯示圖片需要手動創(chuàng)建文件夾
1)在根目錄創(chuàng)建images文件夾,在里面分別創(chuàng)建2.0x 3.0x文件用于屏幕適配
2)在pubspec.yaml文件中將ass注釋打開
3)注意打開注釋后整理代碼不然會提示有空格錯誤
4)下列代碼片段只是測試用味蕾屏幕效果將寬高寫死

child: new Image.asset(
            "images/icon_welcome.png",
            fit: BoxFit.fitHeight,
            width: 450,
            height: 896,
          ),

三晴叨、添加畫面背景圖片

  • 注意這里使用背景圖片的時候return不要使用Column否則顯示不全
class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Container(
          decoration: BoxDecoration(
              image: DecorationImage(
            image: AssetImage("images/icon_welcome.png"),
            fit: BoxFit.cover,
          )),
          child: Center(
            child: Text('Hello Wolrd', style: TextStyle(fontSize: 22.0, color: Colors.white),),
          ),
    );
  }
}

四辅髓、計時器功能

  • 使用Timer之后要在dispose生命周期中銷毀
class _MyHomePageState extends State<MyHomePage> {
  Timer _timer;
  var count = 0;
  String textContent() {
    if (count > 0) {
      return '${count} s';
    } else {
      print('應(yīng)該跳轉(zhuǎn)界面');
      return '0s';
    }
  }

  @override
  void initState() {
    //Flutter 生命周期 創(chuàng)建時在build之后調(diào)用
    print('開始倒計時');

    count = 5;
    final call = (timer) {
      // 預(yù)定時間小于1的時候結(jié)束計時器
      if (count < 1) {
        Navigator.of(context).pushAndRemoveUntil(new MaterialPageRoute(
            builder: (BuildContext context) => new NavigationBarView()), (//跳轉(zhuǎn)到主頁
            Route route) => route == null);
        _timer.cancel();
      } else {
        setState(() {
          // 大于一的時候重新賦值
          count -= 1;
        });
      }
    };
    if (_timer == null) {
      _timer = Timer.periodic(Duration(seconds: 1), call);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage("images/icon_welcome.png"),
            fit: BoxFit.cover,
          )),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.end,
        children: <Widget>[
          new Container(
            child: new Text(
              textContent(),
              style: TextStyle(
                  fontSize: 20,
                  color: Colors.black,
                  decoration: TextDecoration.none),
            ),
            margin: EdgeInsets.fromLTRB(0, 50, 20, 0),
          )
        ],
      ),
    );
  }

  @override
  void dispose() {
    // 界面銷毀后將計時器取消
    _timer.cancel();
    super.dispose();
  }

五株灸、底部導(dǎo)航欄

  • 部分內(nèi)容解釋
HomeViwe 對應(yīng)四個底部按鈕--首頁
ObjectView 對應(yīng)四個底部按鈕--項目
NavigationApp 對應(yīng)四個底部按鈕--導(dǎo)航
IndividualView 對應(yīng)四個底部按鈕--個人
style: TextStyle(color: Colors.black), 底部導(dǎo)航欄動畫樣式,使其顯示文字
image 導(dǎo)航欄中顯示的圖標(biāo)
activeIcon 導(dǎo)航欄中選中時顯示的圖標(biāo)
class NavigationBarState extends State<NavigationBarPage> {
  int index = 0;
  List<Widget> pages = new List();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    pages
      ..add(HomeViwe())
      ..add(ObjectView())
      ..add(NavigationApp())
      ..add(IndividualView());
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      bottomNavigationBar: BottomNavigationBar(
        // 主動顯示導(dǎo)航欄上標(biāo)的文字
        // 選中時才顯示標(biāo)簽上的文字 shifting
        type: BottomNavigationBarType.fixed,
        items: [
          BottomNavigationBarItem(
              icon: Image(
                image: AssetImage("images/icon_home.png"),
                width: 35,
                height: 35,
              ),
              title: Text(
                "首頁",
                style: TextStyle(color: Colors.black),
              ),
              activeIcon: Image(
                image: AssetImage("images/icon_home_click.png"),
                width: 35,
                height: 35,
              )),
          BottomNavigationBarItem(
              icon: Image(
                image: AssetImage("images/icon_object.png"),
                width: 35,
                height: 35,
              ),
              title: Text(
                "項目",
                style: TextStyle(color: Colors.black),
              ),
              activeIcon: Image(
                image: AssetImage("images/icon_object_click.png"),
                width: 35,
                height: 35,
              )),
          BottomNavigationBarItem(
              icon: Image(
                image: AssetImage("images/icon_navigation.png"),
                width: 35,
                height: 35,
              ),
              title: Text(
                "導(dǎo)航",
                style: TextStyle(color: Colors.black),
              ),
              activeIcon: Image(
                image: AssetImage("images/icon_navigation_click.png"),
                width: 35,
                height: 35,
              )),
          BottomNavigationBarItem(
              icon: Image(
                image: AssetImage("images/icon_individual.png"),
                width: 35,
                height: 35,
              ),
              title: Text(
                "個人",
                style: TextStyle(color: Colors.black),
              ),
              activeIcon: Image(
                image: AssetImage("images/icon_individual_click.png"),
                width: 35,
                height: 35,
              ))
        ],
        currentIndex: index,
        onTap: (int i) {
          setState(() {
            index = i;
          });
        },
      ),
      body: pages[index],
    );
  }

六吼和、首頁上的輪播圖

  • 首先在pubspec.yaml文件中添加輪播圖依賴(注意添加位置dependencies/flutter:下面添加)

flutter_swiper: ^1.0.6

class HomePageState extends State<HomePage> {
  List<String> list = new List();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    list
      ..add("http://sw-mirror.com/flutter%2Ftestpng.png")
      ..add("http://sw-mirror.com/flutter%2FThailand.png");
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.green,
          title: Text("首頁"),
        ),
        body: Container(
          width: MediaQuery.of(context).size.width,
          height: 200,
          child: Swiper(
            pagination: //添加標(biāo)記碼
                SwiperPagination(alignment: Alignment.bottomCenter),
            autoplay: true, //設(shè)置自動播放
            itemCount: list.length, //設(shè)置item的個數(shù)
            itemBuilder: (BuildContext context, int index) {
              //設(shè)置item的內(nèi)容
              return Image.network(
                list[index],
                fit: BoxFit.fill,
              );
            },
          ),
        ));
  }
}

GitHub倉庫地址

未完待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窘疮,隨后出現(xiàn)的幾起案子袋哼,更是在濱河造成了極大的恐慌,老刑警劉巖闸衫,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涛贯,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔚出,警方通過查閱死者的電腦和手機弟翘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骄酗,“玉大人稀余,你說我怎么就攤上這事∏鞣” “怎么了睛琳?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長踏烙。 經(jīng)常有香客問我师骗,道長,這世上最難降的妖魔是什么宙帝? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任丧凤,我火速辦了婚禮募闲,結(jié)果婚禮上步脓,老公的妹妹穿的比我還像新娘。我一直安慰自己浩螺,他們只是感情好靴患,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著要出,像睡著了一般鸳君。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上患蹂,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天或颊,我揣著相機與錄音,去河邊找鬼传于。 笑死囱挑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沼溜。 我是一名探鬼主播平挑,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了通熄?” 一聲冷哼從身側(cè)響起唆涝,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唇辨,沒想到半個月后廊酣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡助泽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年啰扛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗡贺。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡隐解,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诫睬,到底是詐尸還是另有隱情煞茫,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布摄凡,位于F島的核電站续徽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏亲澡。R本人自食惡果不足惜钦扭,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望床绪。 院中可真熱鬧客情,春花似錦、人聲如沸癞己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痹雅。三九已至仰担,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绩社,已是汗流浹背摔蓝。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留愉耙,地道東北人贮尉。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像劲阎,于是被迫代替她去往敵國和親绘盟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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