Я пытаюсь получить все документы с их полями из коллекции firestore, но это не работает. Я сделал это:
final _fireStore = FirebaseFirestore.instance;
Future<void> getData() async{
QuerySnapshot querySnapshot = await _fireStore.collection('addsaidas').get();;
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
print(allData);
}
Но экран по-прежнему пуст. Код работает, но ничего не появляется.
Ваш код кажется мне хорошим на первый взгляд. По вопросу, касающемуся этой линии
Но экран по-прежнему пуст. Код работает, но ничего не появляется.
Чтобы отобразить результат на экране, мы должны использовать виджеты, предоставляемые флаттером.
Вот один пример с использованием ListView, а также печатью результата в консоли onPress FloatingActionButton
:
class MyHomePage extends StatelessWidget {
MyHomePage({Key? key}) : super(key: key);
final _fireStore = FirebaseFirestore.instance;
final ref =
FirebaseFirestore.instance.collection('addsaidas').snapshots();
Future<void> getData() async {
QuerySnapshot querySnapshot =
await _fireStore.collection('addsaidas').get();
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
for (var dataMap in allData) {
if (dataMap is Map) {
// add a type check to ensure dataMap is a Map
for (var key in dataMap.keys) {
print('$key: ${dataMap[key]}'); //printing document fields using keys
}
print('----------------------');
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('My Screen')),
body: StreamBuilder<QuerySnapshot>(
stream: ref,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const Center(child: CircularProgressIndicator());
}
final documents = snapshot.data!.docs;
return ListView.builder(
itemCount: documents.length,
itemBuilder: (context, index) {
final document = documents[index];
final data = document.data() as Map<String, dynamic>;
return ListTile(
title: Text(data['nomesaida']),
subtitle: Text(data['datasaida']),
);
},
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: getData,
backgroundColor: Colors.green,
child: const Icon(Icons.navigation),
),
);
}
}
Вы можете распечатать другие поля, как указано выше.
Помогает ли этот раздел? firebase.google.com/docs/firestore/query-data/get-data#dart_5