Как бы я перечислил все значения моей базы данных в представлении списка StreamBuilder? С базой данных в реальном времени - PullRequest
0 голосов
/ 25 марта 2020

Я пытался перечислить свою базу данных в виде списка, однако я получаю эту ошибку:

тип '_InternalLinkedHashMap' не является подтипом типа 'Список'

Примечание: BroadcastDb инициализируется как:

final DatabaseReference broadcastDb =
  FirebaseDatabase.instance.reference().child("Broadcasts");

Это мой текущий код:

new StreamBuilder(
            stream: broadcastDb.onValue,
            builder: (context, snap) {
              if (snap.hasData &&
                  !snap.hasError &&
                  snap.data.snapshot.value != null) {
                DataSnapshot snapshot = snap.data.snapshot;
                List item = [];
                List _list = [];
                _list = snapshot.value;
                _list.forEach((f) {
                  if (f != null) {
                    item.add(f);
                  }
                });
                return snap.data.snapshot.value == null
                    ? SizedBox()
                    : ListView.builder(
                        scrollDirection: Axis.horizontal,
                        itemCount: item.length,
                        itemBuilder: (context, index) {
                          return Text(item[index]);
                        },
                      );
              } else {
                return Center(child: CircularProgressIndicator());
              }
            },
          ),

Есть идеи, почему это так? Я что-то не так делаю?

Моя база данных настроена так:

"Broadcasts" : {
  "313123871927391279321" : {
     "title" : "test_title",
  }
},

Спасибо за ваше время, я действительно ценю это.

1 Ответ

0 голосов
/ 25 марта 2020

Похоже, что значение снимка в вашем onValue является HashMap, поэтому в JSON это будет примерно так:

broadcastDb: {
  child1: { ... },
  child2: { ... },
  child3: { ... }
}

Если вы хотите получить только значения из этого, вам нужно преобразовать тип в List

List<String>.from(event.snapshot.value as Map<dynamic, dynamic>).values.toList();

Каждый dynamic в списке, к которому это приводит, является одним из { ... } из JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...