Я пытаюсь получить данные из Firestore
. Я сделал это успешно с помощью StreamBuilder
виджета. Я хочу передать данные, полученные с firestore
, на другой экран.
Я не хочу печатать ListView
с StreamBuilder
, просто хочу получить данные и передать на следующий экран я звоню с Navigator.push(...
Так что это мой get_news()
метод, который я реализовал для получения данных:
// get the news
Stream<List<News>> getNews() {
return _db.collection("news").snapshots().map(
(snapshot) => snapshot.documents
.map((doc) => News.fromMap(doc.data, doc.documentID))
.toList(),
) ;
}
И это мой News
модель.
class News {
final String headline;
final String description;
final String imageUrl;
final String timeNews;
final String timeDate;
final String priority;
String id;
News({this.headline,this.description, this.imageUrl, this.timeNews, this.timeDate, this.priority, this.id});
News.fromMap(Map<String,dynamic> data, String id):
headline=data['headline'],
description=data['description'],
imageUrl=data['imageUrl'],
timeNews=data['timeNews'],
timeDate=data['timeDate'],
priority=data['priority'],
id=data['id'];
Map<String, dynamic> toMap(){
return {
"headline" : headline,
"description": description,
"imageUrl": imageUrl,
"timeNews": timeNews,
"timeDate": timeDate,
"priority": priority,
"id": id,
};
}
}
Вот как я передаю его в нормальных условиях через StreamBuilder
- Что я не хочу сейчас делать
Expanded(
child: StreamBuilder(
stream: FireStoreServiceApi().getNews(),
builder:
(BuildContext context, AsyncSnapshot<List<News>> snapshot) {
if (snapshot.hasError || !snapshot.hasData) {
return Text("Invalid");
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
News news = snapshot.data[index]; // this is I want to get
return Text("Working");
},
);
}
},
)),
Итак без с использованием StreamBuilder , как я могу вызвать FireStoreServiceApi().getNews()
и получить объект news
?