Fluter-Providerステータス管理
4450 ワード
Provider
は、サブアセンブリの状態を管理するウィジェットであり、サブアセンブリの状態が変化すると、NotifyとしてUIが更新される.Listener
のすべてのサブウィジェットは、プロバイダにアクセスできますが、Provider
に登録されているウィジェットのみが、その再構築および変更のステータスを反映します.したがって、アプリケーションを設計する際に重要なのは、
Listener
から構成されるべき部分を決定することです.また,どのWidgetがProvider
に登録されて変更の状態を反映すべきか,どのWidgetがListener
に登録されて変更の状態を知らせるべきかを決定することも重要である.ChangeNotifier
単純なCounter例によって、Notifier
が各関係で構成されているかどうかを理解する.以下は構築時のWidget関係です.
Provider
のためにWidgetクラスを作成します.このカウンタはProvider
を継承し、変化の状態(値)を定義する.すなわち、ChangeNotifier
は、追跡が必要な状態をカプセル化する方法であり、サブスクリプション(subscribe)によって状態の変化を観察することができる.
登録されたステータスは、notifyListeners()メソッドによって実際のUIを変更します.import 'package:flutter/foundation.dart';
// Counter class as Notifier
class Counter extends ChangeNotifier{
int value = 0;
void increment(){
value++;
notifyListeners(); // Notify to Listeners
}
}
ChangeNotifierProvider
次いで、ChangeNotifier
WidgetをMyHomePage
Widgetにカプセル化し、ChangeNotifierProvider<Counter>
を構成する.このプロセスでは、以前に作成されたProvider
の実際のファクタが生成されます.複数のChangeNotier
から複数のインスタンスを作成するには、マルチプロバイダを使用する必要があります.ChangeNotifierProvider<Counter>(
builder: (context) => Counter(),
child: MyHomePage(title: 'Flutter Demo')
)
構成されたProvider
は、単純にProvider
として位置づけることができるが、これにより、現在のwidgetの下ですべてのサブwidgetを再構築することができ、パフォーマンスの低下をもたらす.
Consumer
特定のwidgetで登録ステータスを使用するには、そのwidgetの上部にProvider.of<Counter>(context)
widgetを作成します.Consumer
サブwidgetはListenerとして登録され、状態が変化するとUIが再構築され更新される.Consumer<Counter>(
builder: (context, counter, child) => Text(
'${counter.value}'
)
)
リファレンス
import 'package:flutter/foundation.dart';
// Counter class as Notifier
class Counter extends ChangeNotifier{
int value = 0;
void increment(){
value++;
notifyListeners(); // Notify to Listeners
}
}
次いで、
ChangeNotifier
WidgetをMyHomePage
Widgetにカプセル化し、ChangeNotifierProvider<Counter>
を構成する.このプロセスでは、以前に作成されたProvider
の実際のファクタが生成されます.複数のChangeNotier
から複数のインスタンスを作成するには、マルチプロバイダを使用する必要があります.ChangeNotifierProvider<Counter>(
builder: (context) => Counter(),
child: MyHomePage(title: 'Flutter Demo')
)
構成されたProvider
は、単純にProvider
として位置づけることができるが、これにより、現在のwidgetの下ですべてのサブwidgetを再構築することができ、パフォーマンスの低下をもたらす.Consumer
特定のwidgetで登録ステータスを使用するには、そのwidgetの上部にProvider.of<Counter>(context)
widgetを作成します.Consumer
サブwidgetはListenerとして登録され、状態が変化するとUIが再構築され更新される.Consumer<Counter>(
builder: (context, counter, child) => Text(
'${counter.value}'
)
)
リファレンス
Consumer<Counter>(
builder: (context, counter, child) => Text(
'${counter.value}'
)
)
Reference
この問題について(Fluter-Providerステータス管理), 我々は、より多くの情報をここで見つけました https://velog.io/@chlrbtlr30/Flutter-Provider-상태-관리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol