#firebase #flutter #google-cloud-firestore
#firebase #flutter #google-cloud-firestore
Вопрос:
Я пытаюсь получить 4 поля из коллекции firebase (все поля в одной коллекции, каждый документ содержит эти 4 поля) в список, который необходимо фильтровать по-разному после получения данных локально
Я получаю эту ошибку типа ‘speakerNamesModel’ не является подтипом типа ‘String’. в чем моя ошибка? Пожалуйста, приведите пример кода.
class speakerNamesModel {
String speakerlanguage;
String speakername_en;
String speakername_lo;
String speach_audiourl;
speakerNamesModel(
this.speakerlanguage, this.speakername_en, this.speakername_lo, this.speach_audiourl);
speakerNamesModel.fromJson(Map<dynamic, dynamic> parsedJSON)
: speakerlanguage = parsedJSON['speakerlanguage'],
speakername_en = parsedJSON['speakername_en'],
speakername_lo = parsedJSON['speakername_lo'];
speach_audiourl = parsedJSON['speach_audiourl'];
}
Future<List<speakerNamesModel>> getspeakerNamesList() async {
QuerySnapshot qShot =
await FirebaseFirestore.instance.collection ('speakernames').get();
return qShot.docs
.map((doc) => speakerNamesModel(
doc.data()["speachdate"], //timestamp data
doc.data()["speakerlanguage"],//string
doc.data()["speakername_en"], //name in roman letters string
doc.data()["speakername_lo"],//name in local language unicode
doc.data()["speach_audiourl"], //string
))
.toList();
}
@override
void initState() {
getspeakerNamesList().then((List data) {
setState(() {
speakernames = filteredspeakernames = data;
});
});
Комментарии:
1. Где возникает эта ошибка? Код, похоже, работает для меня. К какому типу относятся
speakernames
и ‘filteredspeakernames’?2. Я объявил это следующим образом List speakernames = []; List filteredspeakernames = [];
3. хорошо, можете ли вы сказать, в какой строке возникает ошибка? Где это сказано
type 'speakerNamesModel' is not a subtype of type 'String'
?4. Спасибо, ваша подсказка дала мне решение. После объявления, подобного этому, List<SpeakerNamesModel> Speakernames; List<SpeakerNamesModel> filteredSpeakernames; проблема решена. Еще раз спасибо.
5. Не могли бы вы опубликовать ответ, чтобы кто-нибудь еще мог посмотреть, как вы его решаете?
Ответ №1:
Просто для отслеживания и, как упоминает @subramanian-v, проблема была решена путем объявления их переменных следующим образом:
List<SpeakerNamesModel> Speakernames;
List<SpeakerNamesModel> filteredSpeakernames;