首页 > 解决方案 > 错误:参数类型'Stream>>' 不能分配给参数类型'Stream>'

问题描述

我正在从单个流函数中提取两个列表,以通过最小化读取来节省资金。如何将流绑定到单个列表字段?我正在使用 Firebase Firestore 和 Getx 状态管理

我得到的错误是 error: The argument type 'Stream<List<List<NewsModel>>>' can't be assigned to the parameter type 'Stream<List<NewsModel>>'.

代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:dummy_app/models/NewsModel.dart';
import 'package:get/get.dart';

class FirebaseController extends GetxController {
  @override
  void onInit() {
    newsModelList.bindStream(stream()); //Getting ERROR HERE
    newsModelListYesterday.bindStream(stream()); //Getting ERROR HERE
    super.onInit();
  }

  // Observable list bind to stream
  RxList<NewsModel> newsModelList = <NewsModel>[].obs;

  //
  RxList<NewsModel> newsModelListYesterday = <NewsModel>[].obs;

  // Stream
  Stream<List<List<NewsModel>>> stream() {
    return FirebaseFirestore.instance
        .collection('news')
        .doc("Business")
        .snapshots()
        .map((ds) {
      var mapData = ds.data(); // Extracts map
      /// Extracting today and yesterday field
      final stringToday = mapData!['today'];
      final stringYesterday = mapData!['yesterday'];

      /// Storing Lists in a Var
      List mapListToday = mapData![stringToday];
      List mapListYesterday = mapData![stringYesterday];

      /// Empty model lists to assign val
      List<NewsModel> modelListToday = [];
      List<NewsModel> modelListYesterday = [];

      /// Assigning values to both lists
      mapListToday.forEach((element) {
        modelListToday.add(NewsModel.fromMap(element));
      });

      mapListYesterday.forEach((element) {
        modelListYesterday.add(NewsModel.fromMap(element));
      });
      return [modelListToday, modelListYesterday];
    });
  }
}

标签: firebaseflutterdartflutter-getx

解决方案


推荐阅读