Потоки флаттера firebase

avatar
Ruhan Saini
8 августа 2021 в 22:24
58
1
0

Я пытаюсь использовать

StreamBuilder<QuerySnapshot>(
            stream: _firestore.collection('messages').snapshots(),
            builder: (context,snapshot){
              if(snapshot.hasData) {
                final messages = snapshot.data.docs;
                List<Text> messageWidgets=[];
                for(var message in messages){
                 final messageText=message.data['text'];
                 final messageSender=message.data['sender'];
                 final messageWidget=
                     Text('$messageText from $messageSender');
                 messageWidgets.add(messageWidget);
                }
              }
            },
            ),

I am getting error in
final messageText=message.data['text'];
final messageSender=message.data['sender'];

Я знаю, что это может быть из-за нового обновления, но я хочу получить к нему доступ, но в документации ничего подобного не нашел.

В базе данных в документе у меня есть два поля отправитель и текст, которые я хочу получить по отдельности из данных в messageText и messageSender. также, пожалуйста, предложите какой-нибудь источник, где я мог бы прочитать, чтобы в следующий раз мне не пришлось задавать такой вопрос.

Источник
Sajad Abdollahi
8 августа 2021 в 23:00
0

что за сообщение об ошибке?

Ответы (1)

avatar
Victor Eronmosele
8 августа 2021 в 23:37
1

Измените эти строки:

final messageText=message.data['text'];
final messageSender=message.data['sender'];

до:

final messageText=(message.data() as Map<String, dynamic>)['text'];
final messageSender=(message.data() as Map<String, dynamic>)['sender'];

Данные, содержащиеся в QueryDocumentSnapshot, можно получить, вызвав метод .data().

Ruhan Saini
9 августа 2021 в 09:48
0

Спасибо за ваше время, но это не работает. Я использовал get('text), он работал нормально.

Victor Eronmosele
9 августа 2021 в 09:53
0

Все в порядке. Когда вы сказали «это не работает», какую ошибку вы получили?

Ruhan Saini
9 августа 2021 в 11:58
0

Он просто показывал красную линию под ['text'] и не запускался.

Victor Eronmosele
9 августа 2021 в 12:48
0

Можете ли вы навести указатель мыши на красную линию и посмотреть, в чем заключается фактическая ошибка? Красные линии всегда имеют соответствующую ошибку.

Ruhan Saini
9 августа 2021 в 13:59
0

Да, конечно. Оператор «[]» не определен для типа «Объект». (Документация) Попробуйте определить оператор '[]'.

Victor Eronmosele
9 августа 2021 в 14:20
0

Хорошо. Я обновил свой ответ, исправив эту ошибку красной строки. Пожалуйста, попробуйте и дайте мне знать, если это работает.