" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter有無狀態(tài)類與State及生命周期詳細介紹

 更新時間:2022年09月26日 09:18:03   作者:聶大哥  
這篇文章主要介紹了Flutter無狀態(tài)類、有狀態(tài)類、State、生命周期,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

Flutter中的生命周期類似于Vue、React中的生命周期一樣,有初始化、狀態(tài)更新、停用、銷毀等。

在React中,組件分為函數(shù)式組件和類式組件,它們的區(qū)別就是一個無狀態(tài)、一個有狀態(tài)。那么在Flutter中亦是如此,它有兩種類,一種是無狀態(tài)類,一種是有狀態(tài)類。其生命周期的使用就是有狀態(tài)類的特定用法。

無狀態(tài)類

無狀態(tài)類內部有build方法,在表面上看 每次數(shù)據(jù)更新都會執(zhí)行build方法。但實際上,在組件樹中,當每次數(shù)據(jù)發(fā)生變更時,無狀態(tài)類都會重新執(zhí)行組件LessComponent對象。

class LessComponent extends StatelessWidget {
  const LessComponent({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

有狀態(tài)類

在有狀態(tài)類中,每次的數(shù)據(jù)發(fā)生變動,在組件樹中只會調用state下的build方法進行重新渲染。這時候就能保存state中的狀態(tài)。

所謂的狀態(tài)就是 state里的屬性。

class FulComponent extends StatefulWidget {
  const FulComponent({Key? key}) : super(key: key);
  @override
  _FulComponentState createState() => _FulComponentState();
}
class _FulComponentState extends State<FulComponent> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

狀態(tài)

剛才講到,狀態(tài)就是state中的屬性值。下面來個示例進行講解:

class FulComponent extends StatefulWidget {
  const FulComponent({Key? key}) : super(key: key);
  @override
  _FulComponentState createState() => _FulComponentState();
}
class _FulComponentState extends State<FulComponent> {
  int count = 0;
  static const sum = 10;
  final nowDate = new DateTime.now();
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Text('${sum}'),
          ElevatedButton.icon(
              onPressed: () {
                setState(() {
                  count++;
                });
              },
              icon: Icon(Icons.add), 
              label: Text('添加')
          )
        ],
      ),
    );
  }
}

例如 整型值count、常量 sum、當前時間。這都是屬于狀態(tài)值,它們存在的區(qū)別就是count可以通過setSatate進行改變。

當每次執(zhí)行setState()時,此組件都會調用build方法進行將改變的數(shù)據(jù)進行重新渲染,以此來保證state中的屬性值的保存。

State生命周期

class FulComponent extends StatefulWidget {
  const FulComponent({Key? key}) : super(key: key);
  @override
  _FulComponentState createState() => _FulComponentState();
}
class _FulComponentState extends State<FulComponent> {
  int count = 0;
  static const sum = 10;
  final nowDate = new DateTime.now();
  @override
  void initState() { // 初始化生命周期鉤子
    super.initState();
    //初始化操作 在這里做
  }
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    // 依賴發(fā)生變更時 執(zhí)行
  }
  @override
  void reassemble() {
    super.reassemble();
    // 重新安裝時執(zhí)行,一般在調試的時候用,在發(fā)正式版本時 不會執(zhí)行
  }
  @override
  void didUpdateWidget(covariant FulComponent oldWidget) {
    super.didUpdateWidget(oldWidget);
    // 組件發(fā)生變更時調用,當父組件有變動,子組件也會執(zhí)行此方法
  }
  @override
  void deactivate() {
    super.deactivate();
    // 停用
  }
  @override
  void dispose() {
    super.dispose();
    // 銷毀
  }
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Text('${sum}'),
          ElevatedButton.icon(
              onPressed: () {
                setState(() {
                  count++;
                });
              },
              icon: Icon(Icons.add),
              label: Text('添加')
          )
        ],
      ),
    );
  }
}

到此這篇關于Flutter有無狀態(tài)類與State及生命周期詳細介紹的文章就介紹到這了,更多相關Flutter狀態(tài)類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android 微信小視頻錄制功能實現(xiàn)詳細介紹

    Android 微信小視頻錄制功能實現(xiàn)詳細介紹

    這篇文章主要介紹了Android 微信小視頻錄制功能實現(xiàn)詳解的相關資料,這里提供了具體的實現(xiàn)思路及代碼,需要的朋友可以參考下
    2016-11-11
  • Android App實現(xiàn)監(jiān)聽軟鍵盤按鍵的三種方式

    Android App實現(xiàn)監(jiān)聽軟鍵盤按鍵的三種方式

    本篇文章主要介紹Android App實現(xiàn)監(jiān)聽軟鍵盤按鍵的三種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Android實現(xiàn)圖片文字識別

    Android實現(xiàn)圖片文字識別

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片文字識別,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Android使用MulticastSocket實現(xiàn)多點廣播圖片

    Android使用MulticastSocket實現(xiàn)多點廣播圖片

    這篇文章主要為大家詳細介紹了Android使用MulticastSocket實現(xiàn)多點廣播圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android入門之Fragment嵌套Fragment的用法詳解

    Android入門之Fragment嵌套Fragment的用法詳解

    這篇文章主要為大家詳細介紹了Android中如何實現(xiàn)Fragment嵌套Fragment的相關資料,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • Android實現(xiàn)定制返回按鈕動畫效果的方法

    Android實現(xiàn)定制返回按鈕動畫效果的方法

    這篇文章主要介紹了Android實現(xiàn)定制返回按鈕動畫效果的方法,涉及Android控件及動畫的相關操作技巧,需要的朋友可以參考下
    2016-02-02
  • Android 解決ScrollView嵌套CridView顯示問題

    Android 解決ScrollView嵌套CridView顯示問題

    這篇文章主要介紹了Android 解決ScrollView嵌套CridView顯示問題的相關資料,使用ScrollView嵌套CridView的時候會出現(xiàn)顯示不全的問題,這里提供解決辦法,需要的朋友可以參考下
    2017-08-08
  • Android 仿微信數(shù)字鍵盤

    Android 仿微信數(shù)字鍵盤

    大部分的金融App會對默認的數(shù)字鍵盤進行處理,以實現(xiàn)自定義的數(shù)字安全鍵盤。基于此,本文對對微信數(shù)字鍵盤樣式進行了仿寫,實現(xiàn)了一套自定義的數(shù)字安全鍵盤(支持隨機數(shù)字分布)。
    2021-05-05
  • Android電話撥號器實現(xiàn)方法

    Android電話撥號器實現(xiàn)方法

    這篇文章主要介紹了Android電話撥號器實現(xiàn)方法,可實現(xiàn)模擬Android電話撥號的功能,非常具有實用價值,需要的朋友可以參考下
    2015-09-09
  • Android自定義View實現(xiàn)五子棋游戲

    Android自定義View實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

沙田区| 惠来县| 泸水县| 青阳县| 婺源县| 贵阳市| 锡林浩特市| 金山区| 滨州市| 昌都县| 新民市| 南陵县| 英超| 屯门区| 会泽县| 寻甸| 屏边| 永平县| 饶平县| 恩施市| 梅州市| 宜都市| 亳州市| 静乐县| 察哈| 霍城县| 泸溪县| 大同县| 当雄县| 客服| 冷水江市| 平山县| 桂东县| 泽普县| 侯马市| 九江市| 循化| 罗城| 武夷山市| 长宁县| 长阳|