質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

解決済

firestoreから値を取得できない(riverpod)

su_da221
su_da221

総合スコア59

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

1回答

0リアクション

0クリップ

280閲覧

投稿2022/09/29 01:47

前提

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

final followerStateProvider = StreamProvider.autoDispose.family((ref, String uid) { return FirebaseFirestore.instance.collection('followers').doc(uid).collection('Followers').snapshots(); }); });

他の書き方も試している
これは階層を一つ上にしているけどこれも取得できない

dart

final testProvider = StreamProvider.autoDispose.family<QuerySnapshot, String>((ref, uid) { return FirebaseFirestore.instance.collection('followers').snapshots(); });

view

dart

class FollowText extends ConsumerWidget { final String uid; // ignore: non_constant_identifier_names final bool is_followes; // フォロワー表示かフォロー数表示 // ignore: non_constant_identifier_names const FollowText({super.key, required this.uid, required this.is_followes}); Widget build(BuildContext context, WidgetRef ref) { final streamFollowQuery = ref.watch(followingStateProvider(uid)); final streamFollowerQuery = ref.watch(followerStateProvider(uid)); // final streamTest = ref.watch(testProvider(uid)); final streamTest = ref.watch(testProvider); print('フォロー数字:$uid'); print('フォロー:$streamTest'); return streamTest.when(data: (QuerySnapshot snapshot) { if (snapshot.size > 0) { final int followingNun = snapshot.size; return Text(snapshot.docs[0].id); } return Text('取得できていない'); // return followTextWidget( // followerNun: followingNun, // is_followes: is_followes, // ); }, error: ((error, stackTrace) { return followTextWidget( followerNun: 00, is_followes: is_followes, ); }), loading: (() { return followTextWidget( followerNun: 0000, is_followes: is_followes, ); })); } ...

試したこと

諸々を調べて試しているが改善できず根本で間違えているのかと投稿しました。

補足情報(FW/ツールのバージョンなど)

flutter 3.0

cloud_firestore: ^3.4.7
flutter_riverpod: ^1.0.4

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。