не является подтипом типа ‘String’ ..Извлечение 4 полей из единой коллекции firebase

#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;