我想创建动态表单并在提交表单后获取数据。我有一个API,并且对此API提出了疑问。在应用程序中,用户将回答问题并将结果保存到API。如何创建动态表单并检索用户输入。请帮忙。
FutureBuilder<List<ConditionType>>(
future: _api.getConditionTypes(job.sectorId),
builder: (context, snapshot) {
//Create Form
}
答案 0 :(得分:0)
尝试使用json_to_form,如果您可以共享响应的结构,则可以帮助我调整自己项目所需的插件。我应该提到的是,通过此实现,尽管DropDownButton可以保存值,但在显示值时往往会出现问题。
答案 1 :(得分:0)
我将Json变换制作对象的模型,然后发出请求:
class Model {
String projectName;
String datePlan;
String activityName;
String hours;
TimeSheetModel({this.projectName, this.datePlan, this.activityName, this.hours});
TimeSheetModel.fromJson(Map<String, dynamic> json){
projectName = json["ProjectName"];
datePlan = json["DatePlan"];
activityName = json["ActivityName"];
hours = json["Hours"];
}
Map toMap() {
var map = new Map<String, dynamic>();
map["ProjectName"] = projectName;
map["DatePlan"] = datePlan;
map["ActivityName"] = activityName;
map["Hours"] = hours;
return map;
}
}
fromJson方法将Json数据转换为GET请求的对象,然后toMap将您的对象转换为POST或PUT请求的Json。
发出GET请求:
getProjects() async {
var url = 'url';
var res = await http
.get(Uri.encodeFull(url), headers: {"Accept": "application/json",
"charset": "UTF-8"});
data = json.decode(res.body);
setState(() {
Model data = Model.fromJson(resBody);
});
}
发出POST请求:
post() async {
var url = 'url';
http.post(url, body:
data.toMap()).then((response) {
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
});
}