リストビューの構築に将来のビルダーを使用しています。サーバーからの応答を取得しています。必要なものを正確に取得しています。私が解決しようとしている単一のエラーがあります。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 回の反復後に製品リストを返すと、リストに製品も表示されました。