getActivityFromType function

Future<Map> getActivityFromType({
  1. required String activityType,
})

//////////////////////////////////////// ////////////////////////////////////////

Implementation

//For fetching a random activity using Type!

Future<Map> getActivityFromType({required String activityType}) async {
  List availableTypes = [
    "education",
    "recreational",
    "social",
    "diy",
    "charity",
    "cooking",
    "relaxation",
    "music",
    "busywork"
  ];

  // If given activity is not in availableTypes...

  // Using toLowerCase() and trim() because the given activity can look like this - "Social ".

  if (availableTypes.contains(activityType.toLowerCase().trim()) == false) {
    throw "${activityType.toLowerCase().trim()} is not an available type. Available types are - education, recreational, social, diy, charity, cooking, relaxation, music and busywork.";
  }

  String targeturl =
      'http://www.boredapi.com/api/activity?type=${activityType.toLowerCase().trim()}';
  http.Response webresult = await http.get(Uri.parse(targeturl));

  var jsondata = jsonDecode(webresult.body);

  if (jsondata.runtimeType.toString() == "_JsonMap") {
    var data = jsondata as Map;
    if (data.keys.toList().contains("error")) {
      throw "Error: ${data["error"]}";
    }
  }
  var activity = jsondata["activity"];
  var accessibility = jsondata["accessibility"];
  var type = jsondata["type"];
  var participants = jsondata["participants"];
  var price = jsondata["price"];
  var link = jsondata["link"];
  var key = jsondata["key"];

  return {
    "Activity": activity,
    "Accessibility": accessibility,
    "Type": type,
    "Participants": participants,
    "Price": price,
    "Link": link,
    "Key": key
  };
}