Я ищу данные в API, который содержит информацию с вложенными объектами. Однако, когда я делаю запрос, я получаю сообщение об ошибке: «Необработанное исключение: тип« _InternalLinkedHashMap »не является подтипом типа« Iterable »». Я пробовал разные учебники, но они всегда имеют эту ошибку. Спасибо за помощь. Вот мои коды ниже:
Класс Ресторан:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:owlwee/Models/CardapioLista.dart';
import 'package:owlwee/Views/MainPage.dart';
import 'package:owlwee/http/webclient.dart';
class Restaurant extends StatefulWidget {
@override
_RestaurantState createState() => _RestaurantState();
}
class _RestaurantState extends State<Restaurant> {
List<CardapioItem> _list = [];
var loading = false;
Future<Null> _fetchData() async {
setState(() {
loading = true;
});
final response = await http.get(
baseUrlEstabelecimento + '/estabelecimento/Lago Sul');
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
setState(() {
for (Map cardapioJson in data) {
_list.add(CardapioItem.fromJson(cardapioJson));
}
loading = false;
});
}
}
@override
void initState() {
super.initState();
_fetchData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
height: 1000,
width: double.maxFinite,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.fromLTRB(0, 20, 0, 0),
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
height: 240,
width: double.maxFinite,
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage(
'$estabelecimentoGlobal' != null ? "assets/images/$estabelecimentoGlobal.jpg" : Text("File not found"),
),
fit: BoxFit.fill,
),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(0, 40, 0, 0),
child: Container(
height: 70,
width: 80,
margin: EdgeInsets.fromLTRB(170, 45, 0, 75),
padding: EdgeInsets.only(right: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
bottomLeft: const Radius.circular(40.0),
),
),
child: Text(
"Você está em\n" + estabelecimentoGlobal,
style: TextStyle(
color: Color(0xff203760),
fontSize: 32.0,
),
textAlign: TextAlign.right,
),
),
),
),
),
Expanded(
child: loading
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: _list.length,
itemBuilder: (context, cardapioJson) {
final item = _list[cardapioJson];
return Container(
height: 100,
padding: const EdgeInsets.all(0),
child: Card(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(item.produto.nome,
style: TextStyle(
color: Color(0xff203760),
fontSize: 20.0,
),
),
Text(item.produto.descricao,
style: TextStyle(
color: Color(0xff203760),
fontSize: 16.0,
),
),
Text(item.produto.preco.toString(),
style: TextStyle(
color: Color(0xff203760),
fontSize: 16.0,
),
),
],
),
),
);
},
),
),
],
),
),
);
}
}
Модели:
class CardapioItem {
final int id;
final String estabelecimento;
final Produto produto;
CardapioItem({
this.id,
this.estabelecimento,
this.produto,
});
factory CardapioItem.fromJson(Map<String, dynamic> json) {
return new CardapioItem(
id: json['id'],
estabelecimento: json['estabelecimento'],
produto: Produto.fromJson(json['produto']));
}
}
class Produto {
final int id;
final String nome;
final String descricao;
final double preco;
Produto({
this.id,
this.nome,
this.descricao,
this.preco,
});
factory Produto.fromJson(Map<String, dynamic> json) {
return new Produto(
id: json['id'],
nome: json['nome'],
descricao: json['descricao'],
preco: json['preco'],
);
}
}
ОШИБКА КОНСОЛЬНОГО СООБЩЕНИЯ:
E/flutter (12678): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'
E/flutter (12678): #0 _RestaurantState._fetchData.<anonymous closure> (package:owlwee/Views/Restaurant.dart:26:34)
E/flutter (12678): #1 State.setState (package:flutter/src/widgets/framework.dart:1148:30)
E/flutter (12678): #2 _RestaurantState._fetchData (package:owlwee/Views/Restaurant.dart:25:7)
E/flutter (12678): <asynchronous suspension>
E/flutter (12678): #3 _RestaurantState.initState (package:owlwee/Views/Restaurant.dart:37:5)
E/flutter (12678): #4 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
E/flutter (12678): #5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12678): #6 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #7 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #8 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12678): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12678): #12 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12678): #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12678): #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12678): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #17 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12678): #18 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #19 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #20 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12678): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #23 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12678): #24 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12678): #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12678): #26 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (12678): #27 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12678): #28 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #29 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #30 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12678): #31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #32 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #33 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12678): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12678): #37 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12678): #38 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12678): #39 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (12678): #40 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12678): #41 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12678): #42 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12678): #43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12678): #44 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12678): #45 ComponentElement._firs