Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

FutureProviderを持つ親画面を、子画面から更新する

Riverpodネタは続く。

カート一覧→タップで数量更新→画面が戻った時にカートが更新・・・されない!データは書き換わっているが、UIが更新されていなかった。

一覧画面のデータFutureProvider.autoDisposeを使って、画面下部のタブに表示している。iPhoneはわからないけど、Androidエミュレータで試したところ、親→子に遷移する時は、親のProviderはautoDisposeの対象にならないみたい。

このような場合は、強制的にFutureProviderを更新する必要がある。このAPIを使う。

pub.dev

使い方はベリーイージー。グローバルに定義している対象のproviderを引数に入れるだけ。

ref.refresh(yourProvider);

オチとしては、ローカルにデータを書き込む系の場合、たいてい非同期になっている。なので、awaitを入れて非同期の書き込み終了が完了してから(もしくはthenのコールバックで)refreshを呼び出さないとつまらない結果を生む。