問題タブ [riverpod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
189 参照

flutter - riverpod 条件付きプロバイダーの状態の更新

私は自分のアプリを river_pod に移植しています。これまでのところ素晴らしいですが、いつも同じ問題に出くわします。によって取得された新しい値に応じて、条件付きでのみプロバイダーの状態を更新する必要がある場合がありますref.watch

この例は、私の最後の障害です。

現在のユーザーの場所を公開する ChangeNotifier プロバイダーがあります。このプロバイダーは、他の複数のプロバイダーによってリッスンされています。それらの 1 つは、場所が変わるたびに近くのトレンド投稿を取得する FutureProvider です。ここでの問題は、この場所が非常に頻繁に (10 秒ごとに) 更新されるため、このフェッチに非常に不必要な時間がかかることです。

その状況で私がやりたいことは、この FutureProvider で、新しい位置を取得できるが、条件付きでのみ更新できるようにすることです (ここでは、最後のフェッチが 1 km 以上離れた場所で行われた場合)、この不要なネットワーク呼び出しを回避し、それによって引き起こされるすべての基になる UI の更新。

これは、比較を行うために最後の状態にアクセスできることと、更新をキャンセルできることの 2 つのことを意味します (ここでは、フェッチを実行して最後の値を返さなくても、UI はそれを更新として読み取ります)。 )。

これらのメカニズムは組み込まれていないことを理解しているので、この問題に対処するために river_pod の方法はあるのでしょうか?

乾杯!

0 投票する
2 に答える
2660 参照

flutter - パラメータを渡さずに Riverpod ファミリ プロバイダを使用する方法

.familyパラメータを再度渡さずに、提供された " " 変更通知子 (既にインスタンス化されており、正しいパラメータを渡している)のインスタンスにアクセスする方法はありますか?

プロバイダ内

ChangeNotifier (パラメーターが必要) のプロバイダーを作成すると、提供されているのと同じ変更通知を取得できますProvider.of<ChangeNotif>(context)

Provider.of<ChangeNotif("dash")>(context)適切なパラメーターを使用してプロバイダーが作成されると、 butのような構文を使用せずに、そのウィジェット ツリーの任意の場所にプロバイダーが提供するものを取得できますProvider.of<ChangeNotif>(context)

リバーポッドで

プロバイダーのインスタンスを取得するときにパラメーターをプロバイダーに渡す必要があるため、プロバイダーが提供する変更通知を必要とする子にそれを渡すために、プロバイダーを変数に割り当てる必要がありました。

_changeNotif子ウィジェットにパラメーターとして渡さずにインスタンス化する方法はありますか? A の子ではない別のウィジェットで _changeNotif の同じインスタンスを取得する方法はありますか (Provider.of<ChangeNotif>(context)新しいパラメーターを渡すことなくプロバイダーで使用するなど)?