如何获取嵌套的 Flutter Firebase 数据

问题描述 投票:0回答:1

我遵循了 Mitch Koko 的教程:

Firebase CRUD 操作

我对保存代码做了一些修改,如下:

Future<void> addNewNote(String noteheader, String noteContent) { 
  return notes.add({ 'note' :{ 'header': noteHeader, 'content': noteContent, },
    'timestamp': Timestamp.now()
  });
}

笔记存储如下

Data Stored in Firebase

问题是我无法根据我制作的初始位置获取标题和内容部分的数据。

我尝试了下面的代码:

  body: StreamBuilder<QuerySnapshot>(
    stream: firestoreService.getNotesStream(),
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        // Load the data
        List notesList = snapshot.data!.docs;

        // Display the data as list
        return ListView.builder(
          itemCount: notesList.length,
          itemBuilder: (context, index) {
            //? Get each Document
            DocumentSnapshot document = notesList[index];
            String docId = document.id;

            //? Get note from each doc
            Map<String, dynamic> data =
                document.data() as Map<String, dynamic>;

            String noteHeader = data['note'];
            // String noteContent = data['note': ];

            //? Display as a ListTile
            return ListTile(
              title: Text(noteHeader),
              // subtitle: Text(noteContent),
            );
          },
        );
      } else {
        //? If no notes
        return const Text('No Notes');
      }
    },
)
 

如何使用相同的格式正确映射它?或者至少我可以使用我之前使用过的语法来理解

flutter firebase google-cloud-firestore
1个回答
0
投票

代码中的这一行与屏幕截图中的数据结构不匹配:

String noteHeader = data['note'];

由于屏幕截图中的

note
字段是地图,因此您需要 使用
Map
:

Map noteMap = data['note'] as Map;

然后你可以通过以下方式获取标题:

String noteHeader = noteMap['header'];
© www.soinside.com 2019 - 2024. All rights reserved.