記事の内容
この記事では、Providerの説明と、その使い方について説明します。
Providerのバージョンは4系です。
Providerを使う場合と使わない場合の違い

Providerを使わないでデータを共有する方法
まずは、Providerを使わないでデータを共有する方法を説明します。
下記の図の場合、topDataを共有しようとすると、下にいくにつれてコンストラクタにデータを渡していく必要があります。

Providerを使ったデータの共有方法
次に上の図で、Providerを使ってtopDataを共有する方法を書いてみます。
providerのversionは以下の通りです。
versionによって書き方が異なるので十分に気を付けて下さい。
cupertino_icons: ^0.1.2 provider: ^4.1.2
この場合、コンストラクタにデータを渡す必要がなくなっています。
Dataクラスの設定
class Data extends ChangeNotifier {
String topData = 'This is top data!!!';
}
ChangeNotifierProviderの設定
ChangeNotifierProvider( create: (_) => Data(), child: MyApp(), ),
Providerとデータの更新方法
次にもう少し複雑で、TextFieldからデータを更新する場合を見ていきます。


MultiProviderの設定
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => Data(),
),
Provider(
create: (_) => MyText(),
),
Provider(
create: (_) => MyTextField(),
)
],
child: MyApp(),
),
changeStringメソッドの定義
void changeString(String value) {
topData = value;
notifyListeners();
}
onChangedの中で、changeStringの呼び出し
onChanged: (newValue) {
context.read().changeString(newValue);
},