firebase - Flutter 页面刷新问题 | ListView 显示错误“BOTTOM OVERFLOWED BY 98 PIXEL”
问题描述
我正在开发一个基于 firebase 的消息传递应用程序。我的主页有问题。我创建了主页以显示最后一条消息、用户名和发送消息的用户的个人资料图片。但是当我从聊天屏幕回来时,只有最后一条消息正在更新。最后一条消息没有显示发送消息的正确用户。但是热重载后它显示正确。并且 ListView 构建器没有滚动。它显示错误“BOTTOM OVERFLOWED BY 98 PIXEL”。我该如何解决这些问题?
Widget chatRoomsList() {
return StreamBuilder(
stream: chatRoomsStream,
builder: (context, snapshot) {
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.docs.length,
shrinkWrap: true,
itemBuilder: (context, index) {
DocumentSnapshot ds = snapshot.data.docs[index];
return ChatRoomListTile(ds.id, ds["lastMessage"], myUserName);
})
: Center(child: CircularProgressIndicator());
},
);
}
聊天室列表磁贴:
class _ChatRoomListTileState extends State<ChatRoomListTile> {
String profilePicUrl = "", name = "", username = "";
getThisUserInfo() async {
username =
widget.chatRoomId.replaceAll(widget.myUserName, "").replaceAll("_", "");
QuerySnapshot querySnapshot = await DatabaseMethods().getUserInfo(username);
print("something the data we are getting ${querySnapshot.docs[0].id}");
name = "${querySnapshot.docs[0]["name"]}";
profilePicUrl = querySnapshot.docs[0]["imgUrl"];
setState(() {});
}
@override
void initState() {
getThisUserInfo();
super.initState();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
before going to charRoom
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChatScreen(
username,
name,
),
));
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(30),
child: Image.network(
profilePicUrl,
height: 40,
width: 40,
),
),
SizedBox(width: 12),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(name,
style: TextStyle(
fontSize: 16,
color: Colors.white,
)),
SizedBox(height: 3),
Container(
width: 200,
child: Text(
widget.lastMessage,
style: TextStyle(
fontSize: 16,
color: HexColor("#E6F4F7"),
),
overflow: TextOverflow.visible,
softWrap: false,
),
),
SizedBox(height: 30),
],
),
],
),
);
}
}
完整主页代码:https ://github.com/Monzim/messengerClone/blob/main/lib/views/home.dart
解决方案
我刚刚更新了我的答案,您可以将此代码放入您的Home class
Column(
children: [
Row(
children: [
...// Your Child
],
),
isSearching ? Expanded(child: searchUserList()) : Expanded(child: chatRoomsList(),
],
),
推荐阅读
- .net - VSTO 加载项将程序集复制到奇怪的位置
- .htaccess - 如何将 http:// 重定向到 Heroku 上托管的 https:// nuxtjs 网站?
- python - 从递归数据库到 JSON
- spring-boot - log4j:在文件和错误控制台中显示两个不同级别的跟踪
- reactjs - 在反应中单击按钮时如何显示表单?
- bash - 使用 BASH 的 Azure 存储帐户 SAS 令牌
- algorithm - 摊销分析是否仅适用于数据结构?
- node.js - 服务器发送(外部)事件
- ios - 如何将 Firebase IOS SDK 添加到项目中?
- javascript - nightwatch.js 中的 mouseButtonClick('right') 无法正常工作