首页 > 解决方案 > 我正在将颤振用于聊天应用程序,并且在用户区分接收方和发送方时出现错误

问题描述

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) { if (futureSnapshot.connectionState == ConnectionState.waiting) { return Center( child: 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),
                ),
              );
            });
      },
    );
  }
}

标签: flutterdart

解决方案


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

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),
        ),
      );
    });
}
}

推荐阅读