getActivityFromType function
//////////////////////////////////////// ////////////////////////////////////////
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
};
}