Получите карту полей в Firestore - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь получить поле карты в документе, который состоит из карт внутри него.

мир - это JSON карта, состоящая из карт.

Я хотел бы получить эти карты во флаттере, чтобы преобразовать их в настраиваемый объект.

enter image description here

Я пробовал это:

Stream<DocumentSnapshot> provideDocumentFieldStream() {
    return Firestore.instance
        .collection('regular-news')
        .document('us-en')
        .snapshots();
  }


  Future<NewsModel> getWorldNews() async {
    final NewsModel nm = NewsModel();
    List<Articles> list = List<Articles>();
    var articles = await Firestore.instance
        .collection("regular-news")
        .document("us-en")
        .get();

Я не могу получить карту карт в статьях переменных.

Пытался использовать такой поток:

Widget build(BuildContext context) {
    return Scaffold(
          appBar: AppBar(
            title: Text('Stream Test',
      body: new StreamBuilder(
        stream: Firestore.instance.collection('regular-news').document('us-en').snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return new Text("Loading");
          } else {
            return new Text(snapshot.data.data.toString());
          }
        }),

  );

    controller: scrollController;
  }

но когда я назначаю в строку, в которой говорится:

Тип аргумента 'Map' не может быть назначен типу параметра 'String'. dart (argument_type_not_assignable)

1 Ответ

1 голос
/ 14 мая 2020

Мне удалось сохранить карты внутри списка динамических c значений:

List<Articles> list = List<Articles>();

    var val = await Firestore.instance
        .collection('collection')
        .document('document').get();

        LinkedHashMap<String, dynamic> data = val['fieldvalue'];

        List<dynamic> values = data.values.toList();

        for (int i = 0; i < values.length; i++) {
          list.add(Articles.fromJson(values[i]));

        }

Тогда обработка данных в списке впоследствии была проще, чем работа со снимками документов.

...