前提
Twitterのデモアプリを練習で作成しています。
フォロー機能を実装中に値が取得できないことで詰まりました。
riverpodのStreamProviderに引数を持たせて特定のユーザーのフォロワー数などを取得したいです。
firestoreの階層
followers/uid(訪れたユーザー)/Followers/uid(フォローしてくれてるユーザー)
実現したいこと
・フォロワー数の獲得
発生している問題・エラーメッセージ
値が取れない。
たまに下記のエラーが出てくるがリロードすると治る
このエラーが何を示しているのか不明(検索したけどヒットせず)
_TypeError (type 'AutoDisposeStreamProviderFamily<QuerySnapshot<Object?>, String>' is not a subtype of type 'AutoDisposeStreamProvider<QuerySnapshot<Map<String, dynamic>>>' of 'function result')
日本語訳は下記
型 'AutoDisposeStreamProvider<QuerySnapshot<Map<String, dynamic>>>' は、'関数結果' の型 'AutoDisposeStreamProviderFamily<QuerySnapshot<Map<String, dynamic>>, String>' のサブタイプではありません
該当のソースコード
dart
1final followerStateProvider = 2 StreamProvider.autoDispose.family((ref, String uid) { 3 return FirebaseFirestore.instance.collection('followers').doc(uid).collection('Followers').snapshots(); 4}); 5});
他の書き方も試している
これは階層を一つ上にしているけどこれも取得できない
dart
1final testProvider = 2 StreamProvider.autoDispose.family<QuerySnapshot, String>((ref, uid) { 3 return FirebaseFirestore.instance.collection('followers').snapshots(); 4});
view
dart
1class FollowText extends ConsumerWidget { 2 final String uid; 3 // ignore: non_constant_identifier_names 4 final bool is_followes; // フォロワー表示かフォロー数表示 5 // ignore: non_constant_identifier_names 6 const FollowText({super.key, required this.uid, required this.is_followes}); 7 8 9 Widget build(BuildContext context, WidgetRef ref) { 10 final streamFollowQuery = ref.watch(followingStateProvider(uid)); 11 final streamFollowerQuery = ref.watch(followerStateProvider(uid)); 12 13 // final streamTest = ref.watch(testProvider(uid)); 14 final streamTest = ref.watch(testProvider); 15 16 print('フォロー数字:$uid'); 17 print('フォロー:$streamTest'); 18 19 return streamTest.when(data: (QuerySnapshot snapshot) { 20 if (snapshot.size > 0) { 21 final int followingNun = snapshot.size; 22 return Text(snapshot.docs[0].id); 23 } 24 return Text('取得できていない'); 25 // return followTextWidget( 26 // followerNun: followingNun, 27 // is_followes: is_followes, 28 // ); 29 }, error: ((error, stackTrace) { 30 return followTextWidget( 31 followerNun: 00, 32 is_followes: is_followes, 33 ); 34 }), loading: (() { 35 return followTextWidget( 36 followerNun: 0000, 37 is_followes: is_followes, 38 ); 39 })); 40} 41...
試したこと
諸々を調べて試しているが改善できず根本で間違えているのかと投稿しました。
補足情報(FW/ツールのバージョンなど)
flutter 3.0
cloud_firestore: ^3.4.7
flutter_riverpod: ^1.0.4

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。