我使用flutter聊天应用程序,并在用户区分接收方和发送方的错误


class Messages extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: FirebaseAuth.instance.currentUser,// here is the error " The argument type 'User' can't be assigned to the parameter type 'Future<dynamic>'.dart(argument_type_not_assignable)"

builder: (ctx, futureSnapshot) {如果(futureSnapshot。connectionState == connectionState .waiting) {返回中心(孩子:CircularProgressIndicator (),);}

return StreamBuilder(
stream: FirebaseFirestore.instance
.collection('chat')
.orderBy('createdAt', descending: true)
.snapshots(),
builder: (ctx, chatSnapshot) {
if (chatSnapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
final chatDocs = chatSnapshot.data.docs;
return ListView.builder(
reverse: true,
itemCount: chatSnapshot.data.docs.length,
itemBuilder: (ctx, index) => MessageBubble(
chatDocs[index]['text'],
chatDocs[index]['userId'] == futureSnapshot.data.uid,
key: ValueKey(chatDocs[index].documentID),
),
);
});
},
);
}
}

'FirebaseAuth.instance. 'currentUser'不是获取当前用户uid的future,你可以这样做。

class Messages extends StatelessWidget {
final User user = FirebaseAuth.instance.currentUser;
@override
Widget build(BuildContext context) {
final uid = user.uid; // set the function here
return StreamBuilder(
stream: FirebaseFirestore.instance
.collection('chat')
.orderBy('createdAt', descending: true)
.snapshots(),
builder: (ctx, chatSnapshot) {
if (chatSnapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
final chatDocs = chatSnapshot.data.docs;
return ListView.builder(
reverse: true,
itemCount: chatSnapshot.data.docs.length,
itemBuilder: (ctx, index) => MessageBubble(
chatDocs[index]['text'],
chatDocs[index]['userId'] == uid, // Use it here
key: ValueKey(chatDocs[index].documentID),
),
);
});
}
}

FirebaseAuth.instance。currentUser不是错误提示的Future。如果用户经过身份验证,则返回User Class的一个实例。对于这种情况,您不需要使用FutureBuilder Widget。你可以直接使用

相关内容

最新更新