0

BLoCパターンFirestoreでドキュメントを取得しようとしています。2 つのイベントがあり、1 つはすべてのドキュメントをフェッチし、もう 1 つはクエリに基づいてドキュメントをフェッチします。2 つのイベントのコードは次のとおりです。

  Stream<JobFeedState> _mapFetchAllJobPostsToState(
      FetchAllJobPosts event) async* {
    yield LoadingJobPosts();
    try {
      _jobsSubscription?.cancel();
      _jobsSubscription = _jobsRepository.getAllTheJobsPosted().listen((jobs) {
        add(JobPostsRefreshed(jobs: jobs));
      });
    } catch (e) {
      yield Error(message: e.toString());
    }
  }

  Stream<JobFeedState> _mapFetchJobPostsForLocation(
      FetchJobPostsForLocation event) async* {
    yield LoadingJobPosts();
    try {
      _jobsSubscription?.cancel();
      _jobsInLocationsubscription?.cancel();
      _jobsInLocationsubscription =
          _jobsRepository.getJobsInALocation(event.location.country).listen((jobs) {
        add(JobPostsRefreshed(jobs: jobs));
      });
    } catch (e) {
      yield Error(message: e.toString());
    }
  }

_mapFetchAllJobPostsToState()期待どおりに動作しています。しかし、もう 1 つは、_mapFetchJobPostsForLocation()最初にデータを取得しますが、ストリームの変更は表示されません。クエリに基づいてデータを取得する関数は次のとおりです。

  // getJobsInALocation()
  Stream<List<JobPostDocumentModel>> getJobsInALocation(String location) {
    var collectionGroup =
        Firestore.instance.collectionGroup(AppStringConstants.posts);
    return collectionGroup
        .where(AppStringConstants.country, isEqualTo: location)
        .snapshots()
        .map((snapshot) {
      return snapshot.documents.map((docSnapshot) {
        DocumentReference documentReference = docSnapshot.reference;
        JobPostModel jobPostModel = JobPostModel.fromSnapshot(docSnapshot);
        JobPostDocumentModel jobPostDocumentModel = JobPostDocumentModel(
          documentReference: documentReference,
          jobPostModel: jobPostModel,
        );
        return jobPostDocumentModel;
      }).toList();
    });
  }

ここで何が問題なのですか?

4

0 に答える 0