FutureProviderを持つ親画面を、子画面から更新する
Riverpodネタは続く。
カート一覧→タップで数量更新→画面が戻った時にカートが更新・・・されない!データは書き換わっているが、UIが更新されていなかった。
一覧画面のデータFutureProvider.autoDispose
を使って、画面下部のタブに表示している。iPhoneはわからないけど、Androidのエミュレータで試したところ、親→子に遷移する時は、親のProviderはautoDisposeの対象にならないみたい。
このような場合は、強制的にFutureProvider
を更新する必要がある。このAPIを使う。
使い方はベリーイージー。グローバルに定義している対象のproviderを引数に入れるだけ。
ref.refresh(yourProvider);
オチとしては、ローカルにデータを書き込む系の場合、たいてい非同期になっている。なので、await
を入れて非同期の書き込み終了が完了してから(もしくはthen
のコールバックで)refresh
を呼び出さないとつまらない結果を生む。