android - “字符串”类型不是“布尔”类型的子类型
问题描述
我在尝试构建包含聊天的应用程序时收到一条错误消息,消息是:
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('عذرًا, هناك مشكلة');
}
},
);
},
);
}
谁能提出解决方案并告诉我该怎么做?
解决方案
问题是您在此处评论的这一行:
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);
你可以:
- 取消注释此行
chatDocs[index]['userId'] ==futureSnapshot.data.udi
或传递另一个布尔值(真或假)
推荐阅读
- javascript - CSP 阻止 GTM
- php - 如何使用 bootstrap 和 php 在单独的行中设置不同的未来帖子?
- mysql - serverless-mysql:Lambda 函数在查询时死掉,没有错误
- backend - Restful API 创建多个依赖资源
- winforms - 当我按下键盘上的一个键时,我该怎么做?
- javascript - 滑块更新后 D3 强制定向平滑过渡
- youtube-api - 使用 Youtube Data API 从频道名称中获取频道 ID
- kotlin - 如何使用 Espresso Kotlin 进行顺序测试
- css - 在 Shiny App 中保留选定的选项卡面板描述
- javascript - 如何在 node.js 中异步执行任务?