我正在从Angela YU学习Flutter聊天应用程序,但这部分代码就像她写的一样,但对我来说不工作,它有很多错误
StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('messages').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlueAccent,
),
);
}
final messages = snapshot.data?.docs;
List<Text> messageWidgets = [];
for (var message in messages!) {
final messageText = message.data['text'];
final messageSender = message.data['sender'];
final messageWidget =
Text('$messageText from $messageSender');
messageWidget.add(messageWidget);
}
return Column(
children: [
messageWidgets,
],
);
},
),
以下是错误:
lib/screens/chat_screen.dart:72:53: Error: The operator '[]' isn't defined for the class 'Object? Function()'.
- 'Object'来自'dart:core'。请尝试将运算子更正为现有的运算子,或定义'[]'运算子。final messageText = message.data ['text'];第一个字符串是什么?错误:没有为类“Object?Function()”定义运算符“[]”。
- 'Object'来自'dart:core'。请尝试将运算子更正为现有的运算子,或定义'[]'运算子。final messageSender = message.data ['sender'];^ lib/screens/chat_screens.dart:76:35:您可以使用以下命令来创建一个对话框:错误:没有为类“Text”定义方法“add”。
- 'Text'来自'package:flutter/src/widgets/text.dart'('/C:/src/flutter/packages/flutter/lib/src/widgets/text. dart')。请尝试将名称更正为现有方法的名称,或定义一个名为'add'的方法。messageWidget.add(messageWidget);第一个字符串是一个字符串,第二个字符串是一个字符串。错误:无法将类型为“List”的值分配给类型为“Widget”的变量。
- “列表"来自”dart:core“。
- “文本”来自“软件包:flutter/源代码/小部件/文本.dart”(“/C:/源代码/flutter/软件包/flutter/lib/源代码/小部件/文本. dart”)。
- “窗口小部件”来自“软件包:flutter/src/widgets/framework.dart”(“/C:/src/flutter/packages/flutter/lib/src/widgets/framework. dart”)。消息窗口小部件,^ lib/screens/chat_screens.dart:67:24:错误:必须返回非空值,因为返回类型“Widget”不允许空值。
- “窗口小部件”来自“软件包:flutter/src/widgets/framework.dart”(“/C:/src/flutter/packages/flutter/lib/src/widgets/framework. dart”)。构建器:(上下文、快照){ ^
3条答案
按热度按时间kqlmhetl1#
像这样更改代码
628mspwn2#
该错误是由于Firestore库的版本升级中发生了重大更改而导致的。
请参阅https://firebase.flutter.dev/docs/firestore/2.0.0_migration/
溶液:
更改此项
更改为:
mjqavswn3#
打开大括号后{只需添加以下代码
并将现有代码更改为