Тип аргумента «Поток» не может быть присвоен типу параметра » Поток?»

# #flutter #google-cloud-firestore #firebase-authentication

Вопрос:

Я получаю ошибку «Тип аргумента ‘Поток’ не может быть назначен типу параметра ‘Поток?» во время выполнения этого кода:

 import 'package:app_using_database/post.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class Home extends StatelessWidget {
  Stream postStream =
      FirebaseFirestore.instance.collection('posts').snapshots();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        padding: EdgeInsets.symmetric(horizontal: 10),
        child: SafeArea(
          child: StreamBuilder<QuerySnapshot>(
            stream: postStream,
            builder:
                (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
              if (snapshot.hasError) {
                return Text('Something went wrong');
              }

              if (snapshot.connectionState == ConnectionState.waiting) {
                return Text("Loading");
              }

              return new ListView(
                children: snapshot.data!.docs.map((DocumentSnapshot document) {
                  Map<String, dynamic> data =
                      document.data() as Map<String, dynamic>;
                  return Post();
                }).toList(),
              );
            },
          ),
        ),
      ),
    );
  }
}
 

Я пытаюсь получить сообщения с firebase, но появляется эта ошибка. В нем также говорится

  • «Поток» происходит от «dart:асинхронный».
  • «QuerySnapshot» происходит из «пакета:cloud_firestore/cloud_firestore.dart»

Комментарии:

1. вы должны добавить ? в свое Stream определение. Stream postStream = FirebaseFirestore.instance.collection('posts').snapshots(); Stream? postStream = FirebaseFirestore.instance.collection('posts').snapshots(); чтобы сделать его недействительным

2. Сделал это. Ничего не меняется. Это все еще приводит к той же ошибке.

Ответ №1:

Измените его на этот

 CollectionReference posts = FirebaseFirestore.instance.collection('posts');
.
.
.
stream: posts.snapshots()