1 year ago

#357479

test-img

ᴅ ᴇ ʙ ᴊ ᴇᴇ ᴛ

Flutter error || Unhandled Exception: type 'SearchModel' is not a subtype of type 'List<SearchModel>' in type cast

I am making a search in ListView.builder where data is coming in JSON data I am not getting the error what it wants to say the searchmodel is not a subtype of type List. or should I go with another approach to work with search in listview.builder

here is my model

   import 'dart:convert';

   SearchModel searchModelFromJson(String str) => 
    SearchModel.fromJson(json.decode(str));

 String searchModelToJson(SearchModel data) => json.encode(data.toJson());

class SearchModel {
 SearchModel({
  required this.data,
  required this.meta,
 });

final List<Datum> data;
final Meta meta;

factory SearchModel.fromJson(Map<String, dynamic> json) => SearchModel(
  data: List<Datum>.from(json["data"].map((x) => Datum.fromJson(x))),
  meta: Meta.fromJson(json["meta"]),
);

Map<String, dynamic> toJson() => {
  "data": List<dynamic>.from(data.map((x) => x.toJson())),
  "meta": meta.toJson(),
  };
}

class Datum {
Datum({
  required this.id,
  required this.attributes,
});

 int? id;
 Attributes? attributes;

 factory Datum.fromJson(Map<String, dynamic> json) => Datum(
  id: json["id"],
  attributes: Attributes.fromJson(json["attributes"]),
);

Map<String, dynamic> toJson() => {
  "id": id,
  "attributes": attributes?.toJson(),
  };
 }

class Attributes {
 Attributes({
  required this.name,
  required this.mobile,
  required this.createdAt,
  required this.updatedAt,
  required this.shopEmail,
  required this.shopUniqueId,
 });

 String? name;
 String? mobile;
 String? createdAt;
 String? updatedAt;
 String? shopEmail;
 String? shopUniqueId;

factory Attributes.fromJson(Map<String, dynamic> json) => Attributes(
  name: json["name"],
  mobile: json["mobile"],
  createdAt: json["createdAt"],
  updatedAt: json["updatedAt"],
  shopEmail: json["shopEmail"],
  shopUniqueId: json["shopUniqueId"],
 );

Map<String, dynamic> toJson() => {
   "name": name,
   "mobile": mobile,
   "createdAt": createdAt,
   "updatedAt": updatedAt,
   "shopEmail": shopEmail,
   "shopUniqueId": shopUniqueId,
   };
 }

 class Meta {
  Meta();

  factory Meta.fromJson(Map<String, dynamic> json) => Meta(
 );

 Map<String, dynamic> toJson() => {
 };
}

here is my controller

  class FetchSearch {

  static Future<SearchModel>  getUserList(String? query) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String? jwt = prefs.getString('jwt');

  var response = await http.get(
  Uri.parse(searchUrl),
  headers: <String,String> {
    'Authorization' : 'Bearer $jwt'
  },
);
  if (response.statusCode == 200) {
    print(response.statusCode);

    var stringResponse = response.body;
    print(stringResponse);

    return SearchModel.fromJson(jsonDecode(stringResponse));

    // Map<String,dynamic> search = json.decode(response.body);
    // print(search);
    // List<dynamic> data = map["data"];
    // return search.map((json) => Attributes.fromJson(json)).toList();
  }
  else {
    throw Exception();
  }

and here is my variables and init function

  int _currentPage = 0, _index = 0;
  List<SearchModel> searchItem = [];
  String query = '';

Future init() async {
  final users = await FetchSearch.getUserList(query);

  setState(() => this.searchItem = users as List<SearchModel>);
}

this is my error in init function

flutter

search

flutter-layout

flutter-dependencies

flutter-listview

0 Answers

Your Answer

Accepted video resources