parse method
Widget
parse(
- Map<
String, dynamic> map, - BuildContext buildContext,
- ClickListener? listener
override
parse the json map into a flutter widget.
Implementation
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext,
ClickListener? listener) {
Map<String, dynamic> on_click = map['on_click'];
String redirect =
on_click.containsKey("redirect") ? map['on_click']['redirect'] : "";
var apiCall =
on_click.containsKey('api_call') ? map['on_click']['api_call'] : "";
var elevatedButton = ElevatedButton(
onPressed: () async {
var response;
if (redirect.isNotEmpty) {
Navigator.pushNamed(buildContext, redirect.toString());
} else if (apiCall.isNotEmpty) {
String method = apiCall['method'];
if (method.compareTo('post') == 0) {
if (apiCall['pre_actions']['validation']) {
if (formKey.currentState!.validate()) {
formKey.currentState!.save();
response = await http.post(Uri.parse(apiCall['url']),
body: jsonEncode(model),
headers: {
'Content-Type': 'application/json; charset=UTF-8'
});
}
} else {
formKey.currentState!.save();
response = await http.post(Uri.parse(apiCall['url']),
body: jsonEncode(model),
headers: {
'Content-Type': 'application/json; charset=UTF-8'
});
}
model = {};
} else if (method.compareTo('get') == 0) {
// response = await http.get(Uri.parse(apiCall['url']));
// listAddressess = response.body;
return;
} else if (method.compareTo('put') == 0)
await http.put(Uri.parse(apiCall['url']));
else
await http.delete(Uri.parse(apiCall['url']));
if (apiCall['post_actions']['showProgress'] == true) {
LinearProgressIndicator(
backgroundColor: Colors.red,
);
}
if (response != null) {
if (method.compareTo('post') == 0 || method.compareTo('put') == 0)
formKey.currentState!.reset();
String msg = apiCall['on_success']['toastMessage'];
showDialog(
context: buildContext,
builder: (buildContext) {
return AlertDialog(
title: Text(
'API Call Result',
),
content: new Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
msg,
style: TextStyle(color: Colors.green),
),
],
),
);
});
}
}
},
child: DynamicWidgetBuilder.buildFromMap(
map['child'], buildContext, listener));
return elevatedButton;
}