第一次问这里!
我使用Firebase作为BD在Flutter上编写应用程序,但无法从Stream访问int字段。
这里有一些上下文:
我正在尝试为用户的未读Feed制作徽章通知图标,在Firebase上为每个用户存储一个int变量(unreadFeed),然后将其作为Stream访问,以便每次用户获得未读的Feed。
我的firebase数据库结构是这样的:
-> 我已经编辑了图像,因此它仅具有此所需的数据。由于存在真实的user.id,因此还隐藏了一些用户ID。
这是带有图标的导航栏项的代码部分:
BottomNavigationBarItem(
icon: StreamBuilder(
initialData: _tabBarCount,
stream: activityFeedRef.document(currentUser.id).get().asStream(),
builder: (context, snapshot) {
return BadgeIcon( //custom class for Stacked badge Icon
icon: Icon(Icons.chat, size: 25),
badgeCount: snapshot.data['unreadFeeds'], //need to pass an int for the badge icon number
);
问题是徽章图标上的数字实际上正确显示,但是与此同时,我的调试控制台正在显示此数字:
Class 'int' has no instance method '[]'.
Receiver: 0
Tried calling: []("unreadFeeds")
每次我从一个BottomNavigationBarItem移到另一个BottomNavigationBarItem时,都会在UI上短暂获取异常。
我不明白我在做什么。我已经尝试了很多事情,将其转换为int,将snapshot.data放在DocumentSnapshot变量上,然后将其转换为int变量,但是每次我使用snapshot.data ['unreadFeeds']都会发生,尽管我得到了值。
我需要以其他方式访问它吗?非常感谢您的帮助,谢谢!