Open5

読者コミュニティ|仕組みから理解する Riverpod

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

いつになるかはわかりませんが、以下の内容を追記予定です。

  • チャプター2 「Riverpod チートシート」への追記
    • .family の使い方
    • .override の使い方
    • テストの書き方
  • 新しいチャプターを追加(前半)
    • .family の仕組みと扱い方の注意
    • 自動テストの書き方
  • 新しいチャプターを追加(後半)
    • 公式ドキュメントや issue で紹介されるテクニックとその解説
hayato07hayato07

誤りと思われる点がありました。
Chapter 02 「Riverpod チートシート」のAsyncValue
の最後のコードサンプルの部分です。

- data: (error, stacktrace) => Text(error.toString());
+ error: (error, stacktrace) => Text(error.toString());
osakiosaki

AsyncValueの状態遷移の説明など非常に分かりやすく、ありがとうございます(公式のドキュメントもこうやって説明してくれたら良いのに、と思ってしまいました😅)。今後も追記予定とのことで、楽しみに待ちたいと思います。

.refresh() は .invalidate() と .read() を連続で呼び出した場合と同じ挙動をします。

私もソースを見るとそうなのだろうと思っていたのですが、ref.invalidateref.refreshについて、errorコールバックが呼び出されるか否かの挙動の違いが出るケースがありまして、何らかメカニズムをご存知でしょうか。1年ほど前にDiscussionsへコードとともにコメントしたのですが、Remiさん曰く「because of some race conditions」とのことで...私には???な状況でした。最終的な結果は同じだとしても挙動が違うでしょ?と思ったのですが。

https://github.com/rrousselGit/riverpod/discussions/2343#discussioncomment-5352492