我遵循了 Mitch Koko 的教程:
我对保存代码做了一些修改,如下:
Future<void> addNewNote(String noteheader, String noteContent) {
return notes.add({ 'note' :{ 'header': noteHeader, 'content': noteContent, },
'timestamp': Timestamp.now()
});
}
笔记存储如下
问题是我无法根据我制作的初始位置获取标题和内容部分的数据。
我尝试了下面的代码:
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');
}
},
)
如何使用相同的格式正确映射它?或者至少我可以使用我之前使用过的语法来理解
代码中的这一行与屏幕截图中的数据结构不匹配:
String noteHeader = data['note'];
由于屏幕截图中的
note
字段是地图,因此您需要 使用 Map
:
Map noteMap = data['note'] as Map;
然后你可以通过以下方式获取标题:
String noteHeader = noteMap['header'];