flutter_hooks/useState関数
flutter_hooks/useState関数(詳細は、pub.dev 参照)についての説明です。
useState 関数は、
・ 状態の管理を行う
ために使用されます。
(定義)(定義)flutter_hooks/useState関数:
ValueNotifier<T> useState<T>(
T initialData
)
(例)
class Counter extends HookWidget {
@override
Widget build(BuildContext context) {
final counter = useState(0); //初期値として0を設定
この関数は、
・ 特定のデータ型 T の ValueNotifier を作成
し、
・ その値を管理
します。
このValueNotifier は
・ 値が更新されるたびに、
その値を監視しているウィジェットを再ビルドさせる
という役割を持っています。
動作の詳細
- 初期化
最初の呼び出し時に、initialData で指定された値で ValueNotifier を初期化します。 - 値の更新
ValueNotifier.value が更新されると、それを使用(監視)している HookWidget (ValueNotifierを参照しているウィジェット(この場合はHookWidget)が通知を受けて、自分自身)を再ビルドする必要があるとマーク(システムが内部的にウィジェットを「再ビルドが必要」と識別するためのフラグを立てること)され(すぐにウィジェットは再ビルドされ)ます。 - 後続の呼び出し
最初の呼び出し以降、initialData は無視され、ValueNotifier の現在の値が維持されます。
使用例
以下の例では、カウンターアプリケーションを作成しています。
このウィジェットはタップするたびにカウンターの値を増やし、その値を表示します。
Dart
class Counter extends HookWidget {
@override
Widget build(BuildContext context) {
final counter = useState(0); // 初期値として0を設定
return GestureDetector(
onTap: () => counter.value++, // タップするたびにカウンターの値を増やす
child: Text(counter.value.toString()), // 現在のカウンターの値を表示
);
}
}
関連する機能
- ValueNotifier
ValueNotifier は値の変更をリスナーに通知する Flutter のクラスです。
useState はこの ValueNotifier を使用して状態の変更を管理します。 - useStreamController
useState の代わりに使用できる別の状態管理手法です。
特定のケースで StreamController を用いることで、より詳細な制御や複数の値の非同期更新を扱うことができます。
実装
内部的には、useState 関数は _StateHook を使用して initialData を元に ValueNotifier を生成し、それを返します。
これにより、ウィジェット内で状態を簡単に管理し、動的なUIの構築を支援します。