#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. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшило бы долгосрочную ценность ответа.