Hello I am making an api call where I am getting array of banners. I am getting below error -
_TypeError (type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>')
banners_bloc.dart
class BannersBloc {
late BannerRepository _bannerRepository;
late StreamController _streamController;
StreamSink get bannerListSink => _streamController.sink;
BannersBloc() {
_streamController = StreamController();
_bannerRepository = BannerRepository();
fetchBanners();
}
fetchBanners() async {
bannerListSink.add('Fetching Banners');
try {
Banners banners = await _bannerRepository.getBanners();
bannerListSink.add(banners);
} catch (e) {
bannerListSink.add(e.toString());
print(e);
}
}
dispose() {
_streamController.close();
}
}
banners.dart
class Banners {
late String bannerImageUrl;
late String bannerImageAlt;
late bool isActive;
late int order;
late String id;
Banners(
{required this.bannerImageUrl,
required this.bannerImageAlt,
required this.isActive,
required this.order,
required this.id});
Banners.fromJson(Map<String, dynamic> json) {
bannerImageUrl = json['bannerImageUrl'];
bannerImageAlt = json['bannerImageAlt'];
isActive = json['isActive'];
order = json['order'];
id = json['id'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['bannerImageUrl'] = this.bannerImageUrl;
data['bannerImageAlt'] = this.bannerImageAlt;
data['isActive'] = this.isActive;
data['order'] = this.order;
data['id'] = this.id;
return data;
}
}
api_base_helper.dart
class APIHelper {
final String _baseURL =
"https://raw.githubusercontent.com/gautam-in/shopping-cart-assignment/master/server/";
Future<dynamic> get(String url) async {
try {
final response = await http.get(Uri.parse(_baseURL + url));
return json.decode(response.body);
} catch (err) {
throw new Exception("Something went wrong");
}
}
}
get_banners.dart
class BannerRepository {
Future getBanners() async {
final response = await new APIHelper().get("banners/index.get.json");
return Banners.fromJson(response);
}
}