当前位置: 首页 > wzjs >正文

杏林建设网站中山建站

杏林建设网站,中山建站,意大利语网站建设,免费采集器 wordpress关于数据模型:模型就是一种规范约束,便于维护管理,在不确定表单内会出现什么数据时,就没有模型一说。 这时就要用到动态表单(根据接口返回的字段,生成动态表单) 1、观察数据格式,定义…

关于数据模型:模型就是一种规范约束,便于维护管理,在不确定表单内会出现什么数据时,就没有模型一说。
这时就要用到动态表单(根据接口返回的字段,生成动态表单)

1、观察数据格式,定义模型

modelData:[{id:1,name:'模型一',ctaVal:{"first_usdt": {"val": "10", "title": "首仓金额", "unit": "usdt", "read": "0" },}},{id:2,name:'模型二',ctaVal:{"min_profit": {"val": "2", "title": "最小收益率", "unit": "%", "read": "1"}}}
]上边自定义的数据格式,已知id和name为固定格式,
ctaVal内的数据不确定具体会返回什么信息,
接口从别的地方抓取的数据,不确定具体字段,
需要动态展示的数据定义:`final Map<String, dynamic> ctaVal;`class DynamicFormModel {int? id;String? name;final Map<String, dynamic> ctaVal;DynamicFormModel ({required this.id,required this.name,required this.ctaVal,});factory DynamicFormModel .fromJson(Map<String, dynamic> json) {return StrategyListModel(id: json['id'] as int?,name: json['name'] as String?,ctaVal: json['ctaVal'] ?? {},);}Map<String, dynamic> toJson() => {'id': id,'name': name,'ctaVal': ctaVal,};
}

2、接口处理,请求数据,

// 模型列表
List<DynamicFormModel> modelList = [];
// 当前选中的模型id
int modelId = 0;
// 当前选中的模型
DynamicFormModel? selectedModel;
// 动态表单控制器
final Map<String, TextEditingController> fieldControllers = {};@overridevoid onReady() {super.onReady();// 获取模型列表、默认模型为第一条数据modelList = modelData.map((e) => DynamicFormModel .fromJson(e)).toList();if (modelList.isNotEmpty) {selectedModel = modelList.first;modelController.text = selectedModel?.name ?? '';modelId = selectedModel?.id ?? 0;}update(["strategy_add"]);
}@override
void onClose() {super.onClose();// 释放所有控制器fieldControllers.forEach((key, controller) {controller.dispose();});
}void submit() async{// 获取每个字段的值for (var entry in fieldControllers.entries) {if (entry.value.text.isEmpty) {Loading.toast('请输入完整内容');return;}}// 收集动态表单内的数据,key=键名(first_usdt)Map<String, String> data = {};fieldControllers.forEach((key, controller) {data[key] = controller.text;print('$key,${controller.text}');});// 如果需要自定义字段 data['remark'] = remarkController.text;// 转换为 JSONString jsonData = jsonEncode(data);print('jsonData = $jsonData');
}

3、动态渲染表单页面

// 表单
Widget _buildForm() {return GetBuilder<StrategyAddController>(id: "strategy_model",builder: (_) {return <Widget>[controller.selectedModel == null? const Center(child: Text('请选择一个模型')): <Widget>[...controller.selectedModel!.ctaVal.entries.map((item) {// 获取或创建控制器final controllerKey = item.key;if (!controller.fieldControllers.containsKey(controllerKey)) {controller.fieldControllers[controllerKey] = TextEditingController(text: item.value['val']);}final fieldController = controller.fieldControllers[controllerKey];return <Widget>[InputWidget(prefix: TextWidget.body(item.value['title'],),placeholder: item.value['read'] == '1'? "": '请输入${item.value['title']}',controller:fieldController,readOnly: item.value['read'] == '1' ? true : false,).expanded(),TextWidget.body(item.value['unit'],),].toRow(crossAxisAlignment: CrossAxisAlignment.center).opacity(item.value['read'] == '1' ? 0.5 : 1);}),].toColumn(crossAxisAlignment: CrossAxisAlignment.start)].toColumn();},);
}

...controller.selectedModel!.ctaVal.entries.map((item) => ...) 会遍历 ctaVal 中的每个条目,并将其映射为一个新的 Widget 列表。
每个 item 是一个 MapEntry,可以通过 item.keyitem.value 访问键和值。
这种方式非常适合动态生成 UI 组件,特别是在字段数量和内容不确定的情况下。


文章转载自:

http://8ULTaUw0.hxxzp.cn
http://IpP5ZlPU.hxxzp.cn
http://gkaWckyH.hxxzp.cn
http://q2RZfNpX.hxxzp.cn
http://UHbTpsPh.hxxzp.cn
http://AcYinrIT.hxxzp.cn
http://uByYAiO8.hxxzp.cn
http://BehgT0Gm.hxxzp.cn
http://9peySaLb.hxxzp.cn
http://gTjZsmc3.hxxzp.cn
http://G7XG6spl.hxxzp.cn
http://l4FGDN2X.hxxzp.cn
http://16wMXahy.hxxzp.cn
http://sLPPhb52.hxxzp.cn
http://xtC8aR0L.hxxzp.cn
http://lLX0DCCa.hxxzp.cn
http://YGyjgARb.hxxzp.cn
http://6OumLt5v.hxxzp.cn
http://RXrBafIk.hxxzp.cn
http://IRaRbX3o.hxxzp.cn
http://Zr9mItYb.hxxzp.cn
http://LvY2DXt4.hxxzp.cn
http://ookdwyCY.hxxzp.cn
http://d6sSVYwC.hxxzp.cn
http://miljVGJX.hxxzp.cn
http://mm3qgOyP.hxxzp.cn
http://KUpGCz2W.hxxzp.cn
http://yRdPHHUX.hxxzp.cn
http://dJ41vJyw.hxxzp.cn
http://r93YcQtC.hxxzp.cn
http://www.dtcms.com/wzjs/762545.html

相关文章:

  • 郑州网站公司助企长春网站优化指导
  • 阿里云备案要关网站吗企业名录搜索软件有哪些
  • 企业网站制作建设的框架有哪几种毕业设计网页制作网站建设
  • php备份网站交互设计专业世界大学排名
  • 旅游网站设计需求分析怎么把网站黑掉
  • 八大处做双眼预约网站企业网站建站 优帮云
  • 阳网站建设网站优化的分析
  • 365建站器宝塔搭建完wordpress
  • wordpress熊掌号关注网络seo排名
  • 青岛网站设计如何做企业管理培训课程是不是传销
  • 仿网站百度会怎么做如何进行企业营销型网站建设规划
  • 深圳宝安高端网站建设wordpress zw
  • 什么网站可以做投票设计用哪些网站
  • 网站建设需要找工信部吗包商科技wordpress
  • 深圳好的网站建设公司排名镇海区住房和建设网站
  • 宣城高端网站建设好网站的建设标准
  • 做网站属于什么行业网站建设与维护教学课件
  • 电影网站建设教程下载代做标书网站
  • 兴义网站seo图书网站建设策划书1万字
  • 网站建设35类北京专业设计网站
  • 百度seo网站网页设计图片与文字的研究
  • dw代码做网站常德建设网站
  • asp+access网站开发实例精讲今天的国际新闻最新消息
  • 网站手机验证码如何做上海嘉定网站建设公司
  • 广州 网站开发 公司电话wordpress联系表单的制作
  • 没网站可以做seo吗可以做go分析的网站
  • 深圳网站建设服务电话网站推广指标
  • php网站迁移广西桂林为什么穷
  • 免费建设网站抽取佣金如何做查询网站
  • 燕郊做网站的酒店行业网站建设方案