🕶️
[Flutter✖️Supabase]Riverpod周りで詰まった話
Supabaseでプロバイダー使えない!?
SupabaseProviderを以下のように作成をし、service層で呼び出しをしたところエラーが発生しました。
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
part 'provider.g.dart';
(keepAlive: true)
SupabaseClient supabaseProvider(ref) {
return Supabase.instance.client;
}
エラー
type '(dynamic) => SupabaseClient' is not a subtype of type 'ProviderListenable<dynamic>' of 'provider'
調べたところによるとsupabaseはProviderを必要としないことが判明しました。
つまりグローバルに扱えるインスタンス変数を定義してやるだけで良いことが判明しました。
えっ!!ってなりますよね。なりました。だってfirebaseだとfireStoreProviderとかを定義することが多いので衝撃ですよね。
ということで以下のように定義してやるだけで良さそうです。
./lib/supabase/supabase.dart
import 'package:supabase_flutter/supabase_flutter.dart';
/// supabaseのインスタンス
final supabase = Supabase.instance.client;
参考
Discussion
いやーでも案件でやっときできたんですよね。
コツがいるのでしょう。色々試してみてください。
あああこれ間違ってますね。
Ref
がぬけてますね。上のは、
(Ref ref)
昔のは、
(SupabaseRef ref)