没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'.dartundefined_operator [重复]
Posted
技术标签:
【中文标题】没有为“对象”类型定义运算符“[]”。尝试定义运算符\'[]\'.dartundefined_operator [重复]【英文标题】:The operator '[]' isn't defined for the type 'Object'. Try defining the operator '[]'.dartundefined_operator [duplicate]没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'.dartundefined_operator [重复] 【发布时间】:2021-07-30 13:16:18 【问题描述】:这是完整代码,但我在标题中遇到错误:Text(map["title"]),
部分代码
final TextEditingController _controller = TextEditingController();
void _addTask()
FirebaseFirestore.instance
.collection("todos")
.add("title": _controller.text);
_controller.text = "";
Widget _buildList(QuerySnapshot snapshot)
return ListView.builder(
itemCount: snapshot.docs.length,
itemBuilder: (context, index)
final doc = snapshot.docs[index];
final map = doc.data();
return ListTile(
title: Text(map["title"]),
);
,
);
class TodoListPage extends StatelessWidget
Widget _buildBody(BuildContext context)
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(children: [
Row(
children: [
Expanded(
child: TextField(
controller: _controller,
decoration: InputDecoration(
hintText: "Enter task name",
),
)),
FlatButton(
child: Text(
'Add Task',
style: TextStyle(color: Colors.white),
),
color: Colors.green,
onPressed: ()
_addTask();
,
)
],
),
StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection("todos").snapshots(),
builder: (context, snapshot)
if (!snapshot.hasData) return LinearProgressIndicator();
return Expanded(child: _buildList(snapshot.data));
,
)
]),
);
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: Text('Todo List'),
),
body: _buildBody(context),
);
我想显示云火库的文档标题。
错误
The operator '[]' isn't defined for the type 'Object'.
Try defining the operator '[]'.
【问题讨论】:
试试把最终的 Map map = doc.data() 请检查副本以获取正确的解决方案***.com/questions/67610111/… 【参考方案1】:问题在于您的itemBuilder
,更具体地说,是map
变量的格式没有预期值,因此可以获取标题字段。由于您没有将这个 map
变量用于其他任何地方,也没有将 doc
变量用于其他任何地方,您可以放弃创建这两个额外变量并将值直接传递给您的 ListTile
,如下所示:
itemBuilder: (context, index)
return ListTile(
title: Text(snapshot.docs[index].data()["title"]),
);
,
【讨论】:
以上是关于没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'.dartundefined_operator [重复]的主要内容,如果未能解决你的问题,请参考以下文章
没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'。在使用 listview builder 显示数据时
Flutter:没有为“Object”类型定义运算符“[]”。尝试定义运算符'[]'