Получить все документы из коллекции из Firestore — флаттер

Я пытаюсь получить все документы с их полями из коллекции 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);
}

Но экран по-прежнему пуст. Код работает, но ничего не появляется.

Помогает ли этот раздел? firebase.google.com/docs/firestore/query-data/get-data#dart_‌​5

Wesley LeMahieu 15.02.2023 02:05
Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код кажется мне хорошим на первый взгляд. По вопросу, касающемуся этой линии

Но экран по-прежнему пуст. Код работает, но ничего не появляется.

Чтобы отобразить результат на экране, мы должны использовать виджеты, предоставляемые флаттером.

Вот один пример с использованием 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),
      ),
    );
  }
}

Вы можете распечатать другие поля, как указано выше.

Другие вопросы по теме