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

复制单页网站 教程seo招聘信息

复制单页网站 教程,seo招聘信息,程序员培训班,东莞网站制作网络建设公司关于数据模型:模型就是一种规范约束,便于维护管理,在不确定表单内会出现什么数据时,就没有模型一说。 这时就要用到动态表单(根据接口返回的字段,生成动态表单) 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://www.ds6.com.cn/news/82140.html

相关文章:

  • 广东网站建设有限公司营销说白了就是干什么的
  • 网站推广公司哎奶茶企业关键词推广
  • 建设网站专业成都市seo网站公司
  • 乾县做网站品牌建设的五个要素
  • 江西营销型网站建设郑州网络公司排名
  • js网站下拉置顶代码自己想做个网站怎么做
  • 宁波外贸网站制作哔哩哔哩推广网站
  • 想找人做公司网站要注意什么整合营销传播理论
  • 网站设计网站建设专业视频号的链接在哪
  • 做公司的后台网站用什么软件好外贸seo建站
  • 手机wap版网站制作web设计一个简单网页
  • 做网站要交百分七十定金百度知道个人中心
  • 做邀请函用哪个网站好呢优化seo哪家好
  • wordpress获取当前日期seo搜索引擎优化师
  • 做网站用什么后台seo外包是什么
  • 企业网站底部哪家建设公司网站
  • 天津企业模板建站哪个好会计培训班要多少钱
  • ppt里做网站效果google推广费用
  • 网站建设 国外百度推广入口官网
  • 个人网站可以做百度推广吗站外推广方式有哪些
  • 网站建设按年收费吗开封seo推广
  • 如何租用服务器做网站鄞州seo服务
  • 常德网站建设产品seo排名诊断
  • 做企业网站接单济南seo优化
  • 做分销网站系统下载博客seo教程
  • 什么做电子书下载网站好关键词排名seo优化
  • 网站建设自查报告seo网站推广的主要目的不包括
  • 微信扫一扫登录网站如何做电商培训学校
  • 网站的网页声明怎么做宁波网站seo诊断工具
  • 传奇变态服手游版的官网安徽seo顾问服务