程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON?

开发过程中遇到从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON的问题如何解决?下面主要结合日常开发的经验,给出你关于从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON的解决方法建议,希望对你解决从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON有所启发或帮助;

我一直致力于在 Flutter 应用中使用 Nutritionix API。 Nutritionix 一次只返回 50 个结果及其 API,并通过与他们交谈(我们的团队与他们制定了计划),处理它的唯一方法是围绕它进行编码。我仍在快速学习如何在尝试掌握 Dart/Flutter 的同时最好地处理进行 API 调用和解析 JsON 文件。我目前的策略是尝试预先调用 API 以获取特定餐厅的列表总数。

来自我的 NutritionixCall.dart 文件:

static resource<int> get@R_408_10586@lNum (String restaurant){
return resource(
    url: 'https://API.nutritionix.com/v1_1/search/' + restaurant + '?results=0:50&fIElds=item_name,brand_name,nf_calorIEs,nf_sodium,nf_sugars,nf_cholesterol,nf_@R_408_10586@l_fat,nf_dIEtary_fiber&appID=816cee15&appKey=API_KEY',parse: (responsE) {
      final result = Json.decode(response.body);

      return result['@R_408_10586@l_hits'];
    }
);

}

然后我的想法是我可以将总数加载到对 API 的后续调用中,并以 50 的增量继续调用 API 以填充列表。这并不奇怪地失败了,只是在我尝试调用它时导致模拟器停顿。

来自我的 NutritionixList.dart 文件:

for (int i =0; i <= @R_408_10586@lLisTings; i+51) {
   Webservice().load(NutritionixData.get(restaurant,category,i)).then((
       nutritionLisTings) =>
   {


     setState(() =>
     {
       _nutritionixData += _nutritionixData + nutritionLisTings
     })
   });
 }

}

来自我的 NutritionixCall.dart 文件:

static resource<List<NutritionixData>> get (String restaurant,String category,int minResults) {


final nutritionalincrement = 50;
int maxResults = minResults + nutritionalincrement;





return resource(
    url: 'https://API.nutritionix.com/v1_1/search/' + restaurant + '?results='+ minResults.toString() + ':' + maxResults.toString() + '&fIElds=item_name,nf_dIEtary_fiber&appID=',parse: (responsE) {
      final result = Json.decode(response.body);
      Iterable List = result['hits'];





      List = List.map((model) => NutritionixData.fromJson(model)).toList();

      return List.where((f) => f.nutritionFIElds.nfcategory.contains(category)).toList();
    }
);

}

如果有人对使用 Flutter 的每个查询只返回一小部分结果的 API 进行排序有任何经验,我将永远感激不尽。

解决方法

您是否需要立即处理来自 API 的所有结果,还是仅在用户滚动显示时将它们显示给用户?如果是后者,那么你不应该立即加载所有数据,而是在用户滚动时延迟加载数据。

对于后者,我找到了这个例子:https://www.initpals.com/flutter/how-to-lazy-load-large-list-from-http-rest-api-with-pagination-in-flutter/。 (警告:我没有试过,所以不能保证质量。)

大佬总结

以上是大佬教程为你收集整理的从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON全部内容,希望文章能够帮你解决从一次仅返回 50 个结果的 API 解析 Flutter 中的 JSON所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。