Dart: не удается преобразовать список в список <Карта> Json_Table

#flutter #dart

#flutter #dart

Вопрос:

Я пытаюсь проанализировать данные из Rest API внутри приложения Dart / Flutter. JSON содержит поле с именем бюджеты в корне, которое содержит список слов. Я хочу получить список из этого JSON и показать таблицу из Json с пакетом json_table.

 class _PresupuestoPageState extends State<PresupuestoPage> {

  List <Map<String, dynamic>> _data;

  @override
  void initState() {
    super.initState();
    fetchData();
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Presupuesto"),
        centerTitle: false
      ),
      body: Container(
        alignment: Alignment.center,
        child: _data != null
            ? JsonTable(
                _data,
              )
            : Text("Loading..."),
      ),
    );
  }

Future<void> fetchData() async {
    try {
      final response =
          await http.get("http://pr_laravel.loc/api/budgets");
      if (response.statusCode == 200) {
        print(response.body);
        setState(() {
          _data = jsonDecode(response.body) as List;
        });
      } else {
        print("Some error: ${response.statusCode}");
      }
    } catch (e) {
      print(e);
    }
  }

}
 

Ответ №1:

Просто измените тип вашего _data from List <Map<String, dynamic>> на List <dynamic> .

Комментарии:

1. Это посылает мне эту ошибку: тип ‘_InternalLinkedHashMap<String, dynamic>’ не является подтипом типа ‘List<dynamic>’ в приведении типа

2. это потому, что вы используете элементы списка, которые являются динамическими, как карта, попробуйте преобразовать каждый элемент списка в Map()

Ответ №2:

 List<YourModel> temp = _data.map((data) => YourModel.fromJson(data)).toList();
 

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшило бы долгосрочную ценность ответа.