未为类型 'Object' 定义运算符“[]”。尝试定义运算符 '[]' streambuilder

The operator '[]' isn't defined for the type 'Object'. Try defining the operator '[]' streambuilder

StreamBuilder<QuerySnapshot>(
                    stream: catatan.snapshots(),
                    builder: (_, snapshot) {
                      if (snapshot.hasData) {
                        return Column(
                          children: snapshot.data.docs.map((e) =>
                                  Data(e.data()['judul'], e.data()['isi']))
                              .toList(),
                        );
                      } else {
                        return Text('Data Kosong');
                      }})

我在 ['judul']['isi']

中遇到错误

错误信息: 未为类型 'Object' 定义运算符“[]”。 尝试定义运算符“[]”。

你们能帮帮我吗:)

将您的数据输入 Map<String, dynamic> 参考例子:

StreamBuilder<QuerySnapshot>(
              stream: catatan.snapshots(),
              builder: (BuildContext context,
                  AsyncSnapshot<QuerySnapshot> chatSnapshot) {
                if (chatSnapshot.connectionState == ConnectionState.waiting) {
                  return Center(
                    child: Container(),
                  );
                }
                return ListView(
                  controller: _controller,
                  physics: const BouncingScrollPhysics(),
                  children:
                      chatSnapshot.data!.docs.map((DocumentSnapshot document) {
                    Map<String, dynamic> data =
                        document.data()! as Map<String, dynamic>;
                    return Text(data['judul'])
                  }).toList(),
                );
              },
            ),

您要使用的 data['key'] 运算符仅适用于 Map<String, dynamic> 类型变量。但是,如果未键入,方法 data() 将 return 类型为 Object.

的对象

您必须这样转换结果:

snapshot.data.docs.map<Widget>((e) {
  final data = e.data() as Map<String, dynamic>;
  return Data(data['judul'], data['isi']);
}).toList();