首页 > 解决方案 > “字符串”类型不是“布尔”类型的子类型

问题描述

我在尝试构建包含聊天的应用程序时收到一条错误消息,消息是:

type 'String' is not a subtype of type 'bool'

错误消息的屏幕截图:

在此处输入图像描述 我的代码:

class Messages extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    User user2= FirebaseAuth.instance.currentUser;
    return FutureBuilder(
      // future: Future<String>.delayed(
      //   Duration(seconds: 2),
      //       () => 'Data Loaded',
      // ),
      //future: FirebaseAuth.instance.currentUser,
      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(),);
        }

        if(chatSnapshot.hasData){
        final chatDocs=  chatSnapshot.data.docs;

            return ListView.builder(
              //key: ValueKey(chatDocs[index].docsID),
            reverse: true,
              itemCount:chatDocs.length,
              itemBuilder: (ctx, index)=> MessageBubble(
                  chatDocs[index]['text'],
                  chatDocs[index]['userId'],
                  //chatDocs[index]['userId'] ==futureSnapshot.data.udi,
                ValueKey(chatDocs[index].docsID),
              )
          );}
        else{
          return Text('عذرًا, هناك مشكلة');
        }
        },
        );
      },

    );
  }

谁能提出解决方案并告诉我该怎么做?

标签: androidflutterdartfirebase-cloud-messaging

解决方案


问题是您在此处评论的这一行:

MessageBubble(
 chatDocs[index]['text'],
 chatDocs[index]['userId'],
 // chatDocs[index]['userId'] ==futureSnapshot.data.udi,
 ValueKey(chatDocs[index].docsID),
)

为什么?您的 Object MessageBubble 有 4 个位置参数。其中第三个是isMe并且期望一个boolean. 但是,您传递了 ValueKey (因为它们是位置的)。

此外,您没有提供 4º 参数,required因为所有位置参数都是required

 class MessageBubble extends StatelessWidget {
    final String messsage;
    final userID;
    final bool isMe;
    final Key key;
    MessageBubble(this.messsage,this.userID, this.isMe,this.key);

你可以:

  1. 取消注释此行chatDocs[index]['userId'] ==futureSnapshot.data.udi或传递另一个布尔值(真或假)

推荐阅读