Flutter學習筆記(14)--StatefulWidget簡單使用


如需轉載,請注明出處:Flutter學習筆記(14)--StatefulWidget簡單使用

今天上班沒那么忙,突然想起來我好像沒StatefulWidget(有狀態組件)的demo,閑來無事,寫一個簡單的學習學習,前面我們有說過,Flutter不同於Android。Flutter是只繪制一幀,這一幀會繪制整個widget樹,也就是說一次繪制整個界面,那么想一下,如果想要頁面內容發生變化,是不是要重新繪制界面呢?如果需要重新繪制的,又怎么樣來觸發重新繪制的機制呢?先看下demo的代碼吧,很簡單的!

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MyAppState();
  }

}

class MyAppState extends State<MyApp> {
  var _textContent = 'welcome to flutter word';
  void _changeTextContent(){
    setState(() {
      _textContent = 'what is up man???';
    });
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new MaterialApp(
      theme: new ThemeData(
        primaryColor: Colors.white,
      ),
      debugShowCheckedModeBanner: false,
      title: 'demo',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Demo'),
          leading: Icon(Icons.menu,size: 30,),
          actions: <Widget>[
            Icon(Icons.search,size: 30,)
          ],
        ),
        body: new Center(
          child: new Text(_textContent),
        ),
        floatingActionButton: new FloatingActionButton(onPressed: _changeTextContent,child: new Icon(Icons.adjust),),
      ),
    );
  }
}

StatefulWidget是有狀態的組件,意思不是說StatefulWidget類本身是可變的,實際上StatefulWidget類本身也是不變的,而StatefulWidget持有的state狀態是在widget整個生命周期內一直存在的,也是因為有了這個state狀態,我們就可以通知Flutter框架某一個狀態發生了變化,Flutter會重新運行build方法來重新繪制界面。

上面的demo就是一個text和一個button,點擊按鈕,調用_changeTextContent這個私有的方法,在_changeTextContent這個方法里面我們將文本的內容進行了更改,這個操作是放在了setState方法內的,setState這個方法的作用就是通知Flutter框架,有組件的狀態發生變化了,你需要重新執行build繪制界面了,這樣我們重新賦值的文本內容就會展示到前台了。

 

下一章節:Flutter學習筆記(15)--MaterialApp應用組件及routes路由詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM