-1

リストビューの構築に将来のビルダーを使用しています。サーバーからの応答を取得しています。必要なものを正確に取得しています。私が解決しようとしている単一のエラーがあります。http.getエラーは、メソッドを使用してサーバーからデータをフェッチするときに発生します。String data=response.body;必要な正しい応答が得られ、次のように解析していますString catagoeryId=jsonDecode(data)["data"][i]["_id"];

このjsonをデコードするときに直面した問題は、forループを使用してコンストラクター内でこの文字列を渡しました。しかし、ループのために停止するには長さを指定する必要があります。私が使用している長さは次のとおりdata.lengthです。json 応答をデコードし、コンストラクター内に渡します。しかし、jsonの長さが終了すると、動作が停止してクラッシュしました。344前後の長さを確認しましたが、 data.length オブジェクトが3つしかありません。解析に使用しているコードは次のとおりです。

Future<List<ProductCatagoery>> getCatagories()async{
http.Response response = await http.get("http://138.68.134.226:3020/api/category/");
 List<ProductCatagoery> products=[];
  String data=response.body;
  for (int i=0;i<=data.length;i++) {
String catagoeryId=jsonDecode(data)["data"][i]["_id"];
String catagoeryThumb=jsonDecode(data)["data"][i]["thumb"];
String catagoeryName=jsonDecode(data)["data"][i]["name"];
bool catagoeryActive=jsonDecode(data)["data"][i]["active"];


print('name is: $catagoeryId : $catagoeryThumb : $catagoeryName : $catagoeryActive');
  ProductCatagoery newUser= 
  ProductCatagoery(catagoeryId,catagoeryThumb,catagoeryName,catagoeryActive);
  products.add(newUser);
  print('added ${newUser.id}');
  print('length is${products.length}');
  print('last length data: ${data.length}');
 } 
   return products;
 }

モデルクラス:

class ProductCatagoery {
final String id;
 final String thumb;
 final String name;
 final bool active;
  ProductCatagoery(this.id,this.thumb,this.name,this.active);
 }

応答は次のとおりです。

{"success":true,"data":[{"_id":"5f13cc94c63abc03522eff41","thumb":"category/fresh-meat.jpg","name":"新鮮な肉","active":true} ,{"_id":"5f13cc73c63abc03522eff40","thumb":"category/fruits-vegetables.jpg","name":"果物と野菜","active":true},{"_id":"5f13cca5c63abc03522eff42", "thumb":"category/grocery.jpg","name":"食料品","active":true}]}

注:String data=response.body;データ長だけが必要です。私は地図などを使用していません。1、2、または 3 回の反復後に製品リストを返すと、リストに製品も表示されました。

4

1 に答える 1