import 'dart:io'; import 'package:dating_touchme_app/components/page_appbar.dart'; import 'package:dating_touchme_app/controller/mine/edit_info_controller.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/model/mine/address_data.dart'; import 'package:dating_touchme_app/model/mine/occupation_data.dart'; import 'package:dating_touchme_app/pages/mine/signature_page.dart'; import 'package:dating_touchme_app/pages/mine/tag_setting_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:tdesign_flutter/tdesign_flutter.dart'; class EditInfoPage extends StatefulWidget { const EditInfoPage({super.key}); @override State createState() => _EditInfoPageState(); } class _EditInfoPageState extends State { @override void initState() { super.initState(); // 确保 HomeController 已注册 if (!Get.isRegistered()) { Get.put(EditInfoController()); } } // 显示头像选择选项 void _showAvatarOptions(EditInfoController controller, int type) { showCupertinoModalPopup( context: Get.context!, builder: (context) => CupertinoActionSheet( title: const Text('选择头像'), actions: [ CupertinoActionSheetAction( child: const Text('拍照'), onPressed: () async { Navigator.pop(context); await controller.handleCameraCapture(type); }, ), CupertinoActionSheetAction( child: const Text('从相册选择'), onPressed: () async { Navigator.pop(context); await controller.handleGallerySelection(type); }, ), ], cancelButton: CupertinoActionSheetAction( child: const Text('取消'), isDestructiveAction: true, onPressed: () { Navigator.pop(context); }, ), ), ); } @override Widget build(BuildContext context) { return GetX( init: EditInfoController(), builder: (controller) { return Scaffold( appBar: PageAppbar(title: "编辑资料"), body: SingleChildScrollView( child: Column( children: [ Row( children: [ Expanded( child: InkWell( onTap: (){ controller.menuActive.value = 1; setState(() { }); }, child: Container( height: 49.w, decoration: BoxDecoration( border: Border( bottom: BorderSide( width: 1, color: controller.menuActive.value == 1 ? const Color.fromRGBO(117, 98, 249, 1) : const Color.fromRGBO(242, 242, 242, 1)) ) ), child: Center( child: Text( "编辑", style: TextStyle( fontSize: 13.w, color: controller.menuActive.value == 1 ? const Color.fromRGBO(117, 98, 249, 1) : const Color.fromRGBO(144, 144, 144, 1) ), ), ), ), ), ), Expanded( child: InkWell( onTap: (){ controller.menuActive.value = 2; setState(() { }); }, child: Container( height: 49.w, decoration: BoxDecoration( border: Border( bottom: BorderSide( width: 1, color: controller.menuActive.value == 2 ? const Color.fromRGBO(117, 98, 249, 1) : const Color.fromRGBO(242, 242, 242, 1)) ) ), child: Center( child: Text( "预览", style: TextStyle( fontSize: 13.w, color: controller.menuActive.value == 2 ? const Color.fromRGBO(117, 98, 249, 1) : const Color.fromRGBO(144, 144, 144, 1) ), ), ), ), ), ), ], ), if(controller.menuActive.value == 1) ...[ SizedBox(height: 26.w,), Stack( children: [ SizedBox( child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(85.w)), child: controller.avatarLocalPath.value != "" ? Image.file( File(controller.avatarLocalPath.value), width: 85.w, height: 85.w, ) : (controller.userData.value?.profilePhoto?.isNotEmpty ?? false) ? Image.network( "${controller.userData.value?.profilePhoto ?? ""}", width: 85.w, height: 85.w, fit: BoxFit.cover, ) : Image.asset( Assets.imagesUserAvatar, width: 85.w, height: 85.w, ), ), ), Positioned( right: 8.w, bottom: 1.w, child: Image.asset( Assets.imagesEditAvatar, width: 17.w, height: 17.w, ), ) ], ).onTap(() { _showAvatarOptions(controller, 1); }), SizedBox(height: 20.w,), Container( width: 375.w, padding: EdgeInsets.only( left: 14.w, right: 20.w ), child: Column( children: [ Row( children: [ Text( "个人相册", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ) ], ), SizedBox(height: 5.w,), Container( width: 340.w, margin: EdgeInsets.only(bottom: 35.w), child: Wrap( spacing: 5.w, runSpacing: 5.w, children: [ ...controller.imgList.map((e){ return ClipRRect( borderRadius: BorderRadius.all(Radius.circular(9.w)), child: Image.network( e, width: 70.w, height: 70.w, fit: BoxFit.cover, ), ); }), Container( width: 70.w, height: 70.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(9.w)), border: Border.all(width: 1, color: const Color.fromRGBO(224, 224, 224, 1)) ), child: Center( child: Icon( Icons.add, size: 15.w, color: const Color.fromRGBO(144, 144, 144, 1), ), ), ).onTap(() { _showAvatarOptions(controller, 2); }) ], ), ), Row( children: [ Text( "基本信息", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ) ], ), SizedBox(height: 2.w,), SetItem(label: "昵称", child: Text( controller.userData.value?.nickName ?? "", style: TextStyle( fontSize: 13.w, fontWeight: FontWeight.w500 ), ),), Container( margin: EdgeInsets.only(bottom: 3.w), decoration: BoxDecoration( border: Border( bottom: BorderSide(width: 1, color: const Color.fromRGBO(245, 245, 245, 1)) ) ), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ RichText( text: TextSpan( children: [ TextSpan( text: "性别", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(51, 51, 51, 1), fontWeight: FontWeight.w500 ) ), ] ), ), Row( children: [ Text( "${controller.userData.value?.genderCode == 0 ? "男" : "女"}", style: TextStyle( fontSize: 13.w, fontWeight: FontWeight.w500, color: const Color.fromRGBO(51, 51, 51, 1) ), ), SizedBox(width: 15.w,), Image.asset( controller.userData.value?.genderCode == 0 ? Assets.imagesMale : Assets.imagesFemale, width: 13.w, height: 13.w, color: const Color.fromRGBO(218, 218, 218, 1) ) ], ) ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ RichText( text: TextSpan( children: [ TextSpan( text: "生日", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(51, 51, 51, 1), fontWeight: FontWeight.w500 ) ), TextSpan( text: "*", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(224, 54, 54, 1), fontWeight: FontWeight.w500 ) ), ] ), ), Row( children: [ Text( "${controller.userData.value?.birthDate ?? ""}", style: TextStyle( fontSize: 13.w, fontWeight: FontWeight.w500, color: const Color.fromRGBO(51, 51, 51, 1) ), ), SizedBox(width: 15.w,), Icon( Icons.keyboard_arrow_right, size: 13.w, color: const Color.fromRGBO(191, 191, 191, 1) ) ], ) ], ), ], ), ), SetItem(label: "身高", child: Expanded( child: TextField( controller: controller.heightController, keyboardType: TextInputType.number, textAlign: TextAlign.end, style: TextStyle( fontSize: ScreenUtil().setWidth(13), height: 1 ), decoration: InputDecoration( contentPadding: EdgeInsets.symmetric( vertical: 0, horizontal: 0.w ), hintText: "请输入身高", hintStyle: TextStyle( color: const Color.fromRGBO(191, 191, 191, 1) ), border: const OutlineInputBorder( borderSide: BorderSide.none, // 这将移除边框 // 可选:设置圆角 ), // 如果你希望聚焦时和未聚焦时都没有边框,也可以设置 focusedBorder 和 enabledBorder focusedBorder: const OutlineInputBorder( borderSide: BorderSide.none, borderRadius: BorderRadius.all(Radius.circular(8.0)), ), enabledBorder: const OutlineInputBorder( borderSide: BorderSide.none, borderRadius: BorderRadius.all(Radius.circular(8.0)), ), ), onChanged: (value){ controller.height = value; setState(() { }); }, ), ),), SetItem(label: "所在地", child: InkWell( onTap: () { TDPicker.showMultiLinkedPicker(context, title: '', onConfirm: (selected) { print(selected); controller.location.value = selected.join("-"); Map province = address.firstWhere( (e) => e["label"] == selected[0], orElse: () => {}, ); if(province.isNotEmpty){ Map city = province["children"].firstWhere( (e) => e["label"] == selected[1], orElse: () => {}, ); if(city.isNotEmpty){ Map district = city["children"].firstWhere( (e) => e["label"] == selected[2], orElse: () => {}, ); if(city.isNotEmpty){ controller.locationValue.value = [province["value"], city["value"], district["value"]]; print([province["value"], city["value"], district["value"]]); } } } setState(() { }); Navigator.of(context).pop(); }, data: controller.areaShowData, columnNum: 3, initialData:[]); }, child: Text( controller.location.value != "" ? controller.location.value :"请选择", style: TextStyle( fontSize: 13.w, color: controller.location.value != "" ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.location.value != "" ? FontWeight.w500 : null, ), ), ),), SetItem(label: "家乡", child: InkWell( onTap: () { TDPicker.showMultiLinkedPicker(context, title: '', onConfirm: (selected) { print(selected); controller.homeLocation.value = selected.join("-"); Map province = address.firstWhere( (e) => e["label"] == selected[0], orElse: () => {}, ); if(province.isNotEmpty){ Map city = province["children"].firstWhere( (e) => e["label"] == selected[1], orElse: () => {}, ); if(city.isNotEmpty){ Map district = city["children"].firstWhere( (e) => e["label"] == selected[2], orElse: () => {}, ); if(city.isNotEmpty){ controller.homeLocationValue.value = [province["value"], city["value"], district["value"]]; print([province["value"], city["value"], district["value"]]); } } } setState(() { }); Navigator.of(context).pop(); }, data: controller.areaShowData, columnNum: 3, initialData:[]); }, child: Text( controller.homeLocation.value != "" ? controller.homeLocation.value :"请选择", style: TextStyle( fontSize: 13.w, color: controller.homeLocation.value != "" ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.homeLocation.value != "" ? FontWeight.w500 : null, ), ), ),), SetItem(label: "学历", child: InkWell( onTap: () { TDPicker.showMultiPicker(context, title: '', onConfirm: (selected) { print(selected); print(controller.educationList[selected[0]]); controller.educationSelect.value = selected[0]; setState(() { }); Navigator.of(context).pop(); }, data: [controller.educationList.map((e) => e.desc ?? "").toList()]); }, child: Text( controller.educationSelect.value != -1 ? controller.educationList[controller.educationSelect.value].desc ?? "" : "请选择", style: TextStyle( fontSize: 13.w, color: controller.educationSelect.value != -1 ? const Color.fromRGBO(51, 51, 51, 1) :const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.educationSelect.value != -1 ? FontWeight.w500 : null ), ), ),), SetItem(label: "职业", child: InkWell( onTap: () { TDPicker.showMultiLinkedPicker(context, title: '', onConfirm: (selected) { print(selected); controller.occupation.value = selected.join("-"); OccupationData first = controller.occupationList.firstWhere( (e) => e.industry == selected[0], ); OccupationList second = first.occupationList?.firstWhere( (e) => e.occupation == selected[1] ) ?? OccupationList(); print([first.industryCode, second.occupationCode]); controller.occupationValue.value = [first.industryCode, second.occupationCode]; setState(() { }); Navigator.of(context).pop(); }, data: controller.occupationShowData, columnNum: 2, initialData:[]); }, child: Text( controller.occupation.value != "" ? controller.occupation.value : "请选择", style: TextStyle( fontSize: 13.w, color: controller.occupation.value != "" ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.occupation.value != "" ? FontWeight.w500 : null ), ), ),), // SetItem(label: "公司", showRequired: false,), SetItem(label: "月收入", child: InkWell( onTap: () { TDPicker.showMultiPicker(context, title: '', onConfirm: (selected) { print(selected); print(controller.incomeList[selected[0]]); controller.incomeSelect.value = selected[0]; setState(() { }); Navigator.of(context).pop(); }, data: [controller.incomeList.map((e) => e.desc ?? "").toList()]); }, child: Text( controller.incomeSelect.value != -1 ? controller.incomeList[controller.incomeSelect.value].desc ?? "" :"请选择", style: TextStyle( fontSize: 13.w, color: controller.incomeSelect.value != -1 ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.incomeSelect.value != -1 ? FontWeight.w500 : null ), ), ),), SetItem(label: "婚姻状况", child: InkWell( onTap: () { TDPicker.showMultiPicker(context, title: '', onConfirm: (selected) { print(selected); print(controller.maritalList[selected[0]]); controller.maritalSelect.value = selected[0]; setState(() { }); Navigator.of(context).pop(); }, data: [controller.maritalList.map((e) => e.desc ?? "").toList()]); }, child: Text( controller.maritalSelect.value != -1 ? controller.maritalList[controller.maritalSelect.value].desc ?? "" :"请选择", style: TextStyle( fontSize: 13.w, color: controller.maritalSelect.value != -1 ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.maritalSelect.value != -1 ? FontWeight.w500 : null ), ), ),), SetItem(label: "有无房产", child: InkWell( onTap: () { TDPicker.showMultiPicker(context, title: '', onConfirm: (selected) { print(selected); print(controller.propertyList[selected[0]]); controller.propertySelect.value = selected[0]; setState(() { }); Navigator.of(context).pop(); }, data: [controller.propertyList.map((e) => e.desc ?? "").toList()]); }, child: Text( controller.propertySelect.value != -1 ? controller.propertyList[controller.propertySelect.value].desc ?? "" :"请选择", style: TextStyle( fontSize: 13.w, color: controller.propertySelect.value != -1 ? const Color.fromRGBO(51, 51, 51, 1) : const Color.fromRGBO(191, 191, 191, 1), fontWeight: controller.propertySelect.value != -1 ? FontWeight.w500 : null ), ), ),), Container( margin: EdgeInsets.symmetric( vertical: 30.w ), child: Container( width: 255.w, height: 42.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(42.w)), color: const Color.fromRGBO(117, 98, 249, 1) ), child: Center( child: Text( "保存修改", style: TextStyle( fontSize: 14.w, color: Colors.white, fontWeight: FontWeight.w500 ), ), ), ).onTap((){ controller.saveData(); }), ) // SizedBox(height: 8.w,), // InkWell( // onTap: (){ // Get.to(() => SignaturePage()); // }, // child: Column( // children: [ // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Text( // "交友心声", // style: TextStyle( // fontSize: 13.w, // color: const Color.fromRGBO(144, 144, 144, 1) // ), // ), // Icon( // Icons.keyboard_arrow_right, // size: 13.w, // color: const Color.fromRGBO(191, 191, 191, 1) // ) // ], // ), // Container( // margin: EdgeInsets.only(bottom: 3.w), // padding: EdgeInsets.only(bottom: 12.w), // decoration: BoxDecoration( // border: Border( // bottom: BorderSide(width: 1, color: const Color.fromRGBO(245, 245, 245, 1)) // ) // ), // child: Text( // "拒绝内耗,向阳而生,用热爱抵御岁月漫长,用真诚对待每一次相遇拒绝内耗,向阳而生,用热爱抵御岁月漫长,用真诚对待每一次相遇", // style: TextStyle( // fontSize: 13.w, // fontWeight: FontWeight.w500, // color: const Color.fromRGBO(51, 51, 51, 1) // ), // ), // ), // ], // ), // ), // InkWell( // onTap: (){ // Get.to(() => TagSettingPage()); // }, // child: SetItem(label: "个性标签", showRequired: false,), // ), // SizedBox(height: 8.w,), // Row( // children: [ // Text( // "交友范围", // style: TextStyle( // fontSize: 13.w, // color: const Color.fromRGBO(144, 144, 144, 1) // ), // ) // ], // ), // SizedBox(height: 2.w,), // SetItem(label: "所在地", showRequired: false,), // SetItem(label: "年龄", showRequired: false,), // SetItem(label: "身高", showRequired: false,), // SetItem(label: "最低学历", showRequired: false,), // SetItem(label: "最低月收入", showRequired: false,), ], ), ), ], if(controller.menuActive.value == 2) ...[ Stack( children: [ controller.imgList.length > 0 ? Image.network( controller.imgList[controller.nowSelect.value], width: 375.w, height: 384.w, fit: BoxFit.cover, ) : controller.avatarLocalPath.value != "" ? Image.file( File(controller.avatarLocalPath.value), width: 375.w, height: 384.w, ) : (controller.userData.value?.profilePhoto?.isNotEmpty ?? false) ? Image.network( "${controller.userData.value?.profilePhoto ?? ""}", width: 375.w, height: 384.w, ) : Image.asset( Assets.imagesUserAvatar, width: 375.w, height: 384.w, ), SingleChildScrollView( child: Container( padding: EdgeInsets.only(top: 361.w), child: Container( height: 812.h - 361.w - 49.w - MediaQuery.of(context).padding.top - 54.w, width: 375.w, padding: EdgeInsets.only( top: 31.w, left: 15.w, right: 12.w ), decoration: BoxDecoration( borderRadius: BorderRadius.vertical( top: Radius.circular(23.w) ), color: Colors.white ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Text( "晨晨子", style: TextStyle( fontSize: 19.w, color: const Color.fromRGBO(51, 51, 51, 1), fontWeight: FontWeight.w600 ), ), SizedBox(width: 13.w,), Container( width: 33.w, height: 13.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(13.w)), color: const Color.fromRGBO(255, 237, 255, 1) ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( Assets.imagesFemale, width: 8.w, height: 8.w, ), SizedBox(width: 1.w,), Text( "19", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(255, 66, 236, 1) ), ) ], ), ), SizedBox(width: 3.w,), Container( width: 33.w, height: 13.w, margin: EdgeInsets.only(right: 2.w), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(13.w)), color: const Color.fromRGBO(234, 255, 219, 1) ), child: Center( child: Text( "在线", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(38, 199, 124, 1) ), ), ), ), SizedBox(width: 4.w,), Container( width: 43.w, height: 13.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(13.w)), color: const Color.fromRGBO(246, 237, 255, 1) ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( Assets.imagesRealName, width: 8.w, height: 7.w, ), SizedBox(width: 2.w,), Text( "实名", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(160, 92, 255, 1) ), ) ], ), ), SizedBox(width: 4.w,), Container( width: 33.w, height: 13.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(13.w)), color: const Color.fromRGBO(237, 245, 255, 1) ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( Assets.imagesMale, width: 8.w, height: 8.w, ), SizedBox(width: 1.w,), Text( "19", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(120, 140, 255, 1) ), ) ], ), ), ], ), Container( width: 63.w, height: 27.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(27.w)), color: const Color.fromRGBO(117, 98, 249, .1) ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( Assets.imagesPlayer, width: 15.w, height: 15.w, ), SizedBox(width: 4.w,), Image.asset( Assets.imagesVoice, width: 15.w, height: 13.w, ), SizedBox(width: 4.w,), Text( "6'", style: TextStyle( fontSize: 11.w, color: const Color.fromRGBO(117, 98, 249, 1) ), ) ], ), ) ], ), SizedBox(height: 8.w,), Text( "父母催婚找个结婚的", style: TextStyle( fontSize: 11.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ), SizedBox(height: 11.w,), Wrap( spacing: 7.w, runSpacing: 7.w, children: [ ...controller.tagList.map((e){ return TagItem(label: e); }), ], ), SizedBox(height: 16.w,), Text( "IP属地:广东", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ), Text( "动我ID:16099665", style: TextStyle( fontSize: 9.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ), Spacer(), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 246.w, height: 38.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(38.w)), color: const Color.fromRGBO(51, 51, 51, 1) ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( Assets.imagesChatBtn, width: 13.w, height: 12.w, ), SizedBox(width: 4.w,), Text( "发消息", style: TextStyle( fontSize: 15.w, color: Colors.white, fontWeight: FontWeight.w500 ), ) ], ), ), Container( width: 81.w, height: 38.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(38.w)), color: const Color.fromRGBO(117, 98, 249, 1) ), child: Center( child: Text( "关注", style: TextStyle( fontSize: 15.w, color: Colors.white, fontWeight: FontWeight.w500 ), ), ), ), ], ) ], ), ), ), ), if(controller.imgList.length > 0) Positioned( left: 15.w, top: 313.w, child: Row( children: [ ...controller.imgList.asMap().entries.map((entry){ return Container( margin: EdgeInsets.only(right: 7.w), child: InkWell( onTap: (){ controller.nowSelect.value = entry.key; }, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(7.w)), child: Container( width: 40.w, height: 40.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(7.w)), border: controller.nowSelect.value == entry.key ? Border.all(width: 1.w, color: Colors.white) : null ), child: Center( child: Image.network( entry.value, width: 38.w, height: 38.w, ), ), ), ), ), ); }), ], ), ), ], ) ] ], ), ), ); }, ); } } class SetItem extends StatefulWidget { final String label; final bool showRequired; final Widget child; const SetItem({super.key, required this.label, this.showRequired = true, required this.child}); @override State createState() => _SetItemState(); } class _SetItemState extends State { @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.only(bottom: 3.w), decoration: BoxDecoration( border: Border( bottom: BorderSide(width: 1, color: const Color.fromRGBO(245, 245, 245, 1)) ) ), child: InkWell( child: SizedBox( height: 41.w, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ RichText( text: TextSpan( children: [ TextSpan( text: widget.label, style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(51, 51, 51, 1), fontWeight: FontWeight.w500 ) ), if(widget.showRequired) TextSpan( text: "*", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(224, 54, 54, 1), fontWeight: FontWeight.w500 ) ), ] ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ widget.child, SizedBox(width: 15.w,), Icon( Icons.keyboard_arrow_right, size: 13.w, color: const Color.fromRGBO(191, 191, 191, 1) ) ], ), ) ], ), ), ), ); } } class TagItem extends StatelessWidget { final String label; const TagItem({super.key, required this.label}); @override Widget build(BuildContext context) { return Container( padding: EdgeInsets.symmetric( vertical: 2.w, horizontal: 6.w ), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(13.w)), color: const Color.fromRGBO(245, 247, 255, 1) ), child: Text( label, style: TextStyle( fontSize: 11.w, color: const Color.fromRGBO(51, 51, 51, 1) ), ), ); } }