【问题标题】:How to fetch json data from dynamic url in flutter如何在flutter中从动态url中获取json数据
【发布时间】:2021-05-19 18:49:38
【问题描述】:

我正在使用提供膳食列表的 API 还有用餐细节 链接=https://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata

最后一个词是变量 我想知道如何解析这个链接来给我用户在搜索框中输入的饭菜列表

【问题讨论】:

标签: json flutter web-services dart


【解决方案1】:
import 'dart:async';

import 'package:_samples2/networking.dart';


const theMealDbUrl = 'https://www.themealdb.com/api/json/v1/1/search.php?s=';

class TheMealDB {
  Map<String, dynamic> data;

  FutureOr<void> fetchRecipesFor(String meal) async {
    data = await NetService.getJson<Map<String, dynamic>>('$theMealDbUrl$meal');
  }

  List<String> getMealNamesMatched() {
    return (data['meals'] as List).map<String>((m) => (m as Map)['strMeal']).toList();
  }
}

void main(List<String> args) async {
  var meals = TheMealDB();
  await meals.fetchRecipesFor('cake');
  print(meals.getMealNamesMatched());
}

结果:

[Pancakes, Rock Cakes, Carrot Cake, Dundee cake, Parkin Cake, Eccles Cakes, Madeira Cake, Christmas cake, Banana Pancakes, Battenberg Cake, New York cheesecake, Vegan Chocolate Cake, Tunisian Orange Cake, Honey Yogurt Cheesecake, Salted Caramel Cheescake, Peanut Butter Cheesecake, Provençal Omelette Cake, Polskie Naleśniki (Polish Pancakes)]

更新NetService (networking.dart) 的代码

import 'dart:convert';

import 'package:http/http.dart' as http;


class NetService {
  /* ---------------------------------------------------------------------------- */
  static Future<T> getJson<T>(String url) {
    return http.get(Uri.parse(url))
      .then((response) {
        if (response.statusCode == 200) {
          return jsonDecode(response.body) as T;
        }
        print('Status Code : ${response.statusCode}...');
        return null;
      })
      .catchError((err) => print(err));
  }
}

【讨论】:

  • 谢谢你的回答,但是“NetService.getJson”的代码是什么
  • 通过http获取数据的简单代码。我上面的代码已经更新了。
  • 感谢您抽出宝贵时间帮助我,这真的很重要。
猜你喜欢
  • 2021-12-24
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2021-04-11
  • 1970-01-01
  • 2014-03-13
相关资源
最近更新 更多