Загрузка массивов массивов из пожарного магазина в флаттер - PullRequest
0 голосов
/ 31 мая 2019

В firestore у меня есть документ, структурированный так: имя: строка, фамилия: строка, день рождения: строка, номер телефона: строка, r: список,

, где MyObject содержит сам список, но когда я получаю свойдокумент и сопоставить его как объект (MyMainObject), он генерирует необработанное исключение, которое гласит: тип '_InternalLinkedHashMap' не является подтипом типа 'карта'

Перед добавлением списка все было в порядке, и объект был получен правильноно после добавления списка он выдает это исключение

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class MyMainObject {
  String name;
  String surname;
  String birthday;
  String phoneNumber;
  int id;
  List<MyObject> r;

  MyMainObject(
      {this.name,
      this.surname,
      this.birthday,
      this.phoneNumber,
      this.id,
      this.r});

  factory MyMainObject.fromSnapshot(Map<String, dynamic> parsedSnap) {
    var parsedList = parsedSnap['r'] as List;
    List<MyObject> rList = parsedList.map((i) {
      MyObject.fromJson(i);
    }).toList();
    return MyMainObject(
      name: parsedSnap['name'] as String,
      surname: parsedSnap['surname'] as String,
      birthday: parsedSnap['birth'] as String,
      phoneNumber: parsedSnap['phoneNumber'] as String,
      id: parsedSnap['id'] as int,
      r: rList,
    );
  }
}

class MyObject {
  String dateTime;
  String spec;
  List<String> laps; //Before adding this everything was ok
  String totalLap;

  MyObject({this.dateTime, this.spec});

  factory MyObject.fromJson(Map<String, dynamic> parsedJson) {
    String _totalTempLap = parsedJson['totalLap'];
    List<String> _lapsTemp = new List<String>.from(parsedJson['laps']);
    MyObject r =
        Run(dateTime: parsedJson['dateTime'], spec: parsedJson['spec']);
    r.setLaps(_lapsTemp);
    r.setTotalLap(_totalTempLap);
    return r;
  }
}

class RetrieveObject extends StatefulWidget {
  RetrieveObjectState createState() => new RetrieveObjectState();
}

class RetrieveObjectState extends State<RetrieveObject> {
  MyMainObject myMainObject;

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    Firestore.instance
      ..collection('/maincollection')
          .document('maindocument')
          .collection('mainObjectCollection')
          .document['mainObjectName']
          .snapshots()
          .forEach((doc) {
        setState(() {
          myMainObject = MyMainObject.fromSnapshot(doc.data);
        });
      });
  }

  @override
  Widget build(BuildContext context) {
    return Text('${myMainObject.name}');
  }
}

Я ожидал иметь myMainObject, но вместо этого я получаю необработанное исключение.

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