颤振-Firebase-无法获取数据
这是我社交媒体应用程序上的通知页面,但当我打开该页面时,它没有显示任何内容,只是在工作(circularProgress()),这意味着数据库中没有数据,但有一个数据。它就是不能得到那个数据,你能帮我一下吗 我试图更新一切。我的颤振版本是1.24.0-3.0.pre 应用程序和数据库之间的连接没有问题,因为我可以在其他页面上获取其他数据 是否相关我不知道,但我得到了这个错误: 6.26.0-[Firebase/Firestore][I-FST000001]监视流(6000010b0818)流错误:“不可用:操作超时” [VERBOSE-2:profiler\u metrics\u ios.mm(186)]检索线程信息时出错:(os/kern)参数无效 这是我以前的代码,与原始代码类似,但不起作用。颤振-Firebase-无法获取数据,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,这是我社交媒体应用程序上的通知页面,但当我打开该页面时,它没有显示任何内容,只是在工作(circularProgress()),这意味着数据库中没有数据,但有一个数据。它就是不能得到那个数据,你能帮我一下吗 我试图更新一切。我的颤振版本是1.24.0-3.0.pre 应用程序和数据库之间的连接没有问题,因为我可以在其他页面上获取其他数据 是否相关我不知道,但我得到了这个错误: 6.26.0-[Firebase/Firestore][I-FST000001]监视流(6000010b0818)流错误
import 'package:pga/pages/home.dart';
import 'package:pga/pages/post_screen.dart';
import 'package:pga/pages/profile.dart';
import 'package:pga/widgets/header.dart';
import 'package:pga/widgets/progress.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:timeago/timeago.dart' as timeago;
class ActivityFeed extends StatefulWidget {
@override
_ActivityFeedState createState() => _ActivityFeedState();
}
class _ActivityFeedState extends State<ActivityFeed> {
getActivityFeed() async {
QuerySnapshot snapshot = await activityFeedRef
.doc(currentUser.id)
.collection('feedItems')
.orderBy('timestamp', descending: true)
.limit(50)
.get();
List<ActivityFeedItem> feedItems = [];
snapshot.docs.forEach((doc) {
feedItems.add(ActivityFeedItem.fromDocument(doc));
//print('Activity Feed Item: ${doc.data}');
});
return feedItems;
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white70,
appBar: header(context, titleText: "Bildirimler"),
body: Container(
child: FutureBuilder(
future: getActivityFeed(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return circularProgress();
} else {
return ListView(
children: snapshot.data,
);
}
},
)),
);
}
}
Widget mediaPreview;
String activityItemText;
class ActivityFeedItem extends StatelessWidget {
final String username;
final String userId;
final String type; // 'like', 'follow', 'comment'
final String mediaUrl;
final String postId;
final String userProfileImg;
final String commentData;
final Timestamp timestamp;
ActivityFeedItem({
this.username,
this.userId,
this.type,
this.mediaUrl,
this.postId,
this.userProfileImg,
this.commentData,
this.timestamp,
});
factory ActivityFeedItem.fromDocument(DocumentSnapshot doc) {
return ActivityFeedItem(
username: doc['username'],
userId: doc['userId'],
type: doc['type'],
postId: doc['postId'],
userProfileImg: doc['userProfileImg'],
commentData: doc['commentData'],
timestamp: doc['timestamp'],
mediaUrl: doc['mediaUrl'],
);
}
showPost(context) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PostScreen(
postId: postId,
userId: userId, //currentUser.id,
),
),
);
}
configureMediaPreview(context) {
if (type == "like" || type == 'comment') {
mediaPreview = GestureDetector(
onTap: () => showPost(context),
child: Container(
height: 50.0,
width: 50.0,
child: AspectRatio(
aspectRatio: 16 / 9,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.cover,
image: CachedNetworkImageProvider(mediaUrl),
),
),
)),
),
);
} else {
mediaPreview = Text('');
}
if (type == 'like') {
activityItemText = "Gönderini Beğendi";
} else if (type == 'follow') {
activityItemText = "Seni Takip Ediyor";
} else if (type == 'comment') {
activityItemText = "Yorum Yaptı: $commentData";
} else {
activityItemText = "Error: Unknown type '$type'";
}
}
@override
Widget build(BuildContext context) {
configureMediaPreview(context);
return Padding(
padding: EdgeInsets.only(bottom: 2.0),
child: Container(
color: Colors.white54,
child: ListTile(
title: GestureDetector(
onTap: () => showProfile(context, profileId: userId),
child: RichText(
overflow: TextOverflow.ellipsis,
text: TextSpan(
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
),
children: [
TextSpan(
text: username,
style: TextStyle(fontWeight: FontWeight.bold),
),
TextSpan(
text: ' $activityItemText',
),
]),
),
),
leading: CircleAvatar(
backgroundImage: CachedNetworkImageProvider(userProfileImg),
),
subtitle: Text(
timeago.format(timestamp.toDate()),
overflow: TextOverflow.ellipsis,
),
trailing: mediaPreview,
),
),
);
}
}
showProfile(BuildContext context, {String profileId}) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Profile(
profileId: profileId,
)));
}
import'包:pga/pages/home.dart';
导入“package:pga/pages/post_screen.dart”;
导入“package:pga/pages/profile.dart”;
导入“package:pga/widgets/header.dart”;
导入“package:pga/widgets/progress.dart”;
导入“package:cached_network_image/cached_network_image.dart”;
导入“包:cloud_firestore/cloud_firestore.dart”;
进口“包装:颤振/材料.省道”;
将“package:timeago/timeago.dart”作为timeago导入;
类ActivityFeed扩展StatefulWidget{
@凌驾
_ActivityFeedState createState();
}
类_ActivityFeedState扩展状态{
getActivityFeed()异步{
QuerySnapshot快照=等待活动FeedRef
.doc(currentUser.id)
.collection('feedItems'))
.orderBy('timestamp',降序:true)
.限额(50)
.get();
列出feedItems=[];
snapshot.docs.forEach((doc){
添加(ActivityFeedItem.fromDocument(doc));
//打印('活动提要项:${doc.data}');
});
返回饲料项目;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white70,
appBar:header(上下文,titleText:“Bildirimler”),
主体:容器(
孩子:未来建设者(
future:getActivityFeed(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回循环进程();
}否则{
返回列表视图(
子项:snapshot.data,
);
}
},
)),
);
}
}
微件媒体预览;
字符串activityItemText;
类ActivityFeedItem扩展了无状态小部件{
最终字符串用户名;
最终字符串用户标识;
最后一个字符串类型;//“like”、“follow”、“comment”
最终字符串mediaUrl;
最后的字符串posted;
最终字符串userProfileImg;
最终字符串注释数据;
最终时间戳;
ActivityFeedItem({
这个.username,
这个.userId,
这个.类型,,
这个.mediaUrl,
这个.posted,,
这个.userProfileImg,
这是我们的数据,
这个时间戳,
});
工厂活动FeedItem.fromDocument(DocumentSnapshot文档){
返回活动FeedItem(
用户名:doc['username'],
userId:doc['userId'],
类型:doc['type'],
postId:doc['postId'],
userProfileImg:doc['userProfileImg'],
commentData:doc['commentData'],
时间戳:doc['timestamp'],
mediaUrl:doc['mediaUrl'],
);
}
showPost(上下文){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>PostScreen(
posted:posted,
userId:userId,//currentUser.id,
),
),
);
}
configureMediaPreview(上下文){
if(type==“like”|| type==“comment”){
mediaPreview=手势检测器(
onTap:()=>showPost(上下文),
子:容器(
身高:50.0,
宽度:50.0,
孩子:AspectRatio(
专题:16/9,
子:容器(
装饰:盒子装饰(
图像:装饰图像(
适合:BoxFit.cover,
图像:CachedNetworkImageProvider(mediaUrl),
),
),
)),
),
);
}否则{
mediaPreview=文本(“”);
}
如果(类型=='like'){
activityItemText=“Gönderini Beğendi”;
}else if(类型==“follow”){
activityItemText=“Seni Takip Ediyor”;
}else if(类型=='comment'){
activityItemText=“Yorum Yaptı:$commentData”;
}否则{
activityItemText=“错误:未知类型“$type”;
}
}
@凌驾
小部件构建(构建上下文){
配置MediaPreview(上下文);
返回填充(
填充:仅限边缘设置(底部:2.0),
子:容器(
颜色:颜色。白色54,
孩子:ListTile(
标题:手势检测器(
onTap:()=>showProfile(上下文,profileId:userId),
孩子:RichText(
溢出:TextOverflow.省略号,
text:TextSpan(
样式:TextStyle(
字体大小:14.0,
颜色:颜色,黑色,
),
儿童:[
TextSpan(
文本:用户名,
样式:TextStyle(fontWeight:fontWeight.bold),
),
TextSpan(
文本:“$activityItemText”,
),
]),
),
),
领先:CircleAvatar(
背景图像:CachedNetworkImageProvider(userProfileImg),
),
字幕:文本(
timeago.format(timestamp.toDate()),
溢出:TextOverflow.省略号,
),
尾随:mediaPreview,
),
),
);
}
}
showProfile(BuildContext上下文,{String profileId}){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>Profile(
profileId:profileId,
)));
}
这是我的更新
feedItems(){
return Container(
child: FutureBuilder(
future: getActivityFeed(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
-------> return circularProgress();
} else {
-------> return ListView(
children: snapshot.data,
);
}
},
),
);
}
return Scaffold(
body: ListView(
shrinkWrap: true,
children: <Widget>[
feedItems(),
],
),
);
}
}