[Flutter📱] LifeCycle


LifeCycle?
ライフサイクルは最も基本的な概念の一つです.ライフサイクルが分からなくても、アプリケーションを開発することができます.しかし、開発の過程で様々な問題に直面し、ライフサイクルを知ると対応しやすい.また、演技部分にも大きな影響が出るので、勉強すべきだと思います.
Stateful Widget
オーダー
Constructor
|
createState()
|
initState()
|
didChangeDependencies()
|
Build()
ライフサイクルは順番に継続します.追加終了時にdispose()が呼び出されます.
setState():コンポーネントの状態が変化したときに呼び出され、構築されます.
didUpdateWidget():親部品が更新されたときに呼び出され、構築されます.
constructor
生成者です.親からの変数をメンバー変数に追加します.
createState( )statefulWidgetに存在する必要があります.
通常、テンプレートを使用してstatefulWidgetを生成できます.
class FavoriteWidget extends StatefulWidget {
  const FavoriteWidget({Key? key}) : super(key: key);

  
  _FavoriteWidgetState createState() => _FavoriteWidgetState();
}
これ以上修正する必要はありません.
initState( )
部品を生成するときに呼び出されるメソッド.stateを初期化するために使用され、最初の呼び出しのみが呼び出されます.
使用方法は次のとおりです.

void initState(){
  super.initState(); // 반드시 해줘야한다.
  /*초기화 관련...*/
}
didChangeDependencies( )
部品が最初に作成されると、initState()の直後に呼び出されます.
Called when a dependency of this State object changes. - Flutter
また、前述したように、コンポーネントが依存するデータのオブジェクトが変更されるたびに、コンポーネントが呼び出されます.

void didChangeDependencies(){
  super.didChangeDependencies();
  /*state 변경 시 호출*/
}
build( )
UIの実装部分として、このメソッドが呼び出される回数が最も多い.ここに計算が必要なロジックがたくさんあると、アプリケーションのパフォーマンスが著しく低下します.build()の方法の特徴は以下の通りである.
  • は存在する必要があります.
  • は、再定義(上書き)オブジェクトです.
  • はWidgetを返却する必要があります.
  • 
    Widget build(){
      return Container(...)
    } 
    setState( )
    通知フレームの内部ステータスが変更されました.値が変更されたため、UIの値を反映する必要があるため、構築メソッドが呼び出されます.setState()を使用せずに値を変更した場合、build()メソッドは呼び出されず、UIに反映されません.
    void setState(() => {
      _myState = value;
    })
    // void callback 함수
    didUpdateWidget( )
    部品構成が変更されるたびに呼び出されます.正確には、親部品が変更および再構築する必要がある場合に呼び出されます.
    このメソッドは、以前のステータス自体を受け入れます.(oldWidget)
    
    void didUpdateWidget(covariant T oldWidget) {
      super.didUpdateWidget(oldWidget);
      if(oldWidget.value != widget.value){
        print('update!');
      }
    }
    dispose( )dispose()メソッドは、使用したものを永久に除去するために使用されます.(scrollController, pageController...) クリアしないとメモリ漏れが発生し、アプリケーションのパフォーマンスが低下するので、そうしたほうがいいです.
    
    void dispose() {
      // ...
      super.dispose()
    }
    の最後の部分
    プラットのライフサイクルを理解しました.ライフサイクルを知ることで、開発で発生したホットスポットをすぐにつかむことができます.
    近いうちにプロジェクト開発を行うかもしれません.その前に、問題なく開発できるように、プラットの知識を最大限に身につけます.