[詳細] Flutterのグローバル状態管理プロバイダー

[詳細] Flutterのグローバル状態管理プロバイダー

@author
As.Kai

最初のインポートの依存関係

提供:^ 1.0.2

ここに画像の説明を挿入

最新バージョンはパブで見ることができます

インポート後、libフォルダーの下に状態管理Provideを作成します。
ここに画像の説明を挿入

公式ウェブサイトの例:
静的ページデータ管理++デモを作成する

例:
provideフォルダーにcounter.dartファイルを作成します。

import 'package:flutter/cupertino.dart';

class Counter with ChangeNotifier{
	int value = 0;
	increment(){
		value++;
//内部方法 用户每次调用value++方法 会通知我们执行了该方法
//局部刷新Widget
		notifyListeners();
	}
}

notifyListeners();メソッドは、監視と部分的な更新を意味することに注意してください。
++メソッドを記述した、main.dartに依存関係を記述する必要があります。

void main(){
//连接状态管理器
	var counter = new Counter();
	var providers = new Providers();
//依赖 (规范) 如果有多个管理器 分号在最后一个管理器结束
//改泛型和管理器名称
	providers..provide(
		Provider<Counter>.value(counter)
		);
	//多管理器配置(多管理器除最后一个分号结束,其他不需要分号)
// ..provide(Provider<Counter>.value(counter));
// ..provide(Provider<Counter>.value(counter));
	runApp(
		ProviderNode(
			child: MyApp(),providers: providers,
			)
		);
}

runApp()の構成に注意してください。多くの人は、この構成手順を忘れて、プログラムにエラーを報告させます。
レイアウトページにテキストとボタンを書き込み、ボタンのテキスト番号と1つの
参照メソッドをクリックします。テキスト
はProvideコントロール<ジェネリックマネージャー名> {でラップする必要があります。

コンストラクタbuild(があります

3つのパラメーター(コンテキスト、サブクラスの子、コントローラーカウンター)){ コントロールを直接返します。例:return new Text( '$ {counter.value}'); OK } }




コード:

class Number extends StatelessWidget {
@override
Widget build(BuildContext context) {
	return Container(
	//需要包裹一层Provide<Counter>泛型
		child: new Provide<Counter>(
	//构造器
			builder: (context,child,counter){
			return new Text('${counter.value}');
				},
			),
		);
	}
}

ボタンで:
。マネージャーで++メソッドを呼び出すために、イベントをクリックして
メソッドを呼び出します
Provide.value <一般的なマネージャークラスカウンター>(コンテキスト).increment();

コード:

class MyButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
	return new RaisedButton(
	//点击事件
		onPressed: () {
	//通过Provide.value<>泛型的方式获取上下文后
	// 使用我们创建的increment value++方法
		Provide.value<Counter>(context).increment();
		},
			child: new Text('状态管理点击递增'),
		);
	}
}

簡単なプロバイドが完了しました。フラッターラン。効果を見てみましょう!

私に従って、一緒に成長してください!
-As.Kai

おすすめ

転載: blog.csdn.net/qq_42362997/article/details/111578156