Riverpod.dev/docs(開始URL: https://riverpod.dev/docs/introduction/why_riverpod )には日本語訳ページ(/ja)も部分的には既にあるのですが、その部分はそのまま参照して、その他の英語訳のままのページについては自力で翻訳および解説を補足してみました。まだ工事中ですが最終的に満足ができたら上記サイトの翻訳ページに献上できないかな等という目標もあります。
本ブログの(上記Riverpod.dev/docsの)翻訳および解説の目次頁(構成上のトップページ)は次のURLになります。
本頁は、上記のうちの、「Migration guides / ^0.13.0 から ^0.14.0」の章の翻訳および解説頁になります。
Migration guides
移行ガイド
^0.13.0 から ^0.14.0 へ
Riverpod のバージョンのリリースに伴い、 StateNotifierProvider0.14.0を使用するための構文が変更されました (説明についてはhttps://github.com/rrousselGit/riverpod/issues/341を参照してください)。
記事全体については、次のStateNotifierを検討してください。
class MyModel {}
class MyStateNotifier extends StateNotifier<MyModel> {
MyStateNotifier(): super(MyModel());
}
変更点
1.StateNotifierProviderは、StateNotifierのステートの型を示す追加のジェネリック・パラメータを受け取ります。
final provider = StateNotifierProvider<MyStateNotifier>((ref) {
return MyStateNotifier();
});
final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
return MyStateNotifier();
});
2.StateNotifier を取得する場合は、myProvider の代わりに、myProvider.notifier を読み込む必要があります:
Widget build(BuildContext context, ScopedReader watch) {
MyStateNotifier notifier = watch(provider);
}
Widget build(BuildContext context, ScopedReader watch) {
MyStateNotifier notifier = watch(provider.notifier);
}
3.StateNotifierの状態をリッスンするために、myProvider.stateの代わりにmyProviderを読む必要があります。
Widget build(BuildContext context, ScopedReader watch) {
MyModel state = watch(provider.state);
}
Widget build(BuildContext context, ScopedReader watch) {
MyModel state = watch(provider);
}
自動移行ツールの利用
バージョン0.14.0で、Riverpod用のコマンドラインツールがリリースされました。
コマンドラインのインストール
移行ツールをインストールするには、次のコマンドを実行します。
dart pub global activate riverpod_cli
これで、以下を実行できるはずです。
riverpod --help
コマンドラインがインストールされたので、使用を開始できます。
Usag
コマンドラインがインストールされたので、早速使ってみよう。
1.まず、移行したいプロジェクトをターミナルで開きます。
2.(自分で)リバーポッドをアップグレードしないで下さい。
移行ツールがRiverpodのバージョンをアップグレードしてくれます。
3.プロジェクトにエラーが含まれていないことを確認して下さい。
4.次のコマンドを実行して下さい。
riverpod migrate
ツールはあなたのプロジェクトを分析し、変更を提案します。 例えば、
Widget build(BuildContext context, ScopedReader watch) {
- MyModel state = watch(provider.state);
+ MyModel state = watch(provider);
}
Accept change (y = yes, n = no [default], A = yes to all, q = quit)?
変更を受け入れる場合は「y」を、拒否する場合は「N」を押す。
(次の記事はこちら)