【问题标题】: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 '[]'.

【问题讨论】:

标签: firebase flutter google-cloud-firestore


【解决方案1】:

问题在于您的itemBuilder,更具体地说,是map 变量的格式没有预期值,因此可以获取标题字段。由于您没有将这个 map 变量用于其他任何地方,也没有将 doc 变量用于其他任何地方,您可以放弃创建这两个额外变量并将值直接传递给您的 ListTile,如下所示:

itemBuilder: (context, index) {
    return ListTile(
        title: Text(snapshot.docs[index].data()["title"]),
    );
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-06-11
    相关资源
    最近更新 更多