Error: Expected a value of type 'Iterable', but got one of type '_JsonMap' Flutter
import 'dart:convert';
import 'package:flutter/material.dart';
import '../data/character_api.dart';
import '../model/character.dart';
class CharacterList extends StatefulWidget {
const CharacterList({Key? key}) : super(key: key);
@override
_CharacterListState createState() => _CharacterListState();
}
class _CharacterListState extends State<CharacterList> {
List<Character> characterList = <Character>[];
void getCharactersfromApi() async {
CharacterApi.getCharacters().then((response) {
setState(() {
Iterable list = json.decode(response.body);
characterList = list.map((model) => Character.fromJson(model)).toList();
});
});
}
@override
void initState() {
super.initState();
getCharactersfromApi();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Breaking Bad Characters"),
),
body: Container(
child: ListView.builder(
itemCount: characterList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text("${characterList[index].id}"),
subtitle: Text(characterList[index].title),
);
}),
));
}
}
here is stacktrace
Error: Expected a value of type 'Iterable<dynamic>', but got one of type '_JsonMap' C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw_ C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 99:3 castError C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 485:10 cast C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart 638:14 as_C packages/rexello_tests_only/full_custom_test/flutter_json_api/screens/character_list.dart 20:18 <fn> packages/flutter/src/widgets/framework.dart 1133:30 setState packages/rexello_tests_only/full_custom_test/flutter_json_api/screens/character_list.dart 19:7 <fn> C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1660:54 runUnary C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 147:18 handleValue C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44 handleValueCallback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13 _propagateToListeners C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 567:5 [_completeWithValue] C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 640:7 callback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15 <fn>
I was trying to get a simple json from url to test flutter and json integration . just wanted to show json data as ui text in flutter .
in this line of your code: you're decoding a response to a map, and you put the return type is a list. just replace Iterable list to var response. var response = json.decode(response.body); or you can make this