# #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()