import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/main/lockDetail/lockSet/notificationMode/notificationMode_logic.dart'; import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/translations/trans_lib.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/titleAppBar.dart'; class NotificationModePage extends StatefulWidget { const NotificationModePage({Key? key}) : super(key: key); @override State createState() => _NotificationModePageState(); } class _NotificationModePageState extends State { final logic = Get.put(NotificationModeLogic()); final state = Get.find().state; @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( barTitle: '提醒方式', haveBack: true, backgroundColor: AppColors.mainColor), body: SingleChildScrollView( child: _buildMainView(), )); } Widget _buildMainView() { return Column( children: [ CommonItem( leftTitel: 'APP推送', rightTitle: '管理员', isHaveLine: true, isHaveDirection: false, action: () {}), SizedBox( height: 10.h, ), CommonItem( leftTitel: '邮件提醒', rightTitle: '', isHaveLine: true, isHaveDirection: false, isHaveRightWidget: true, rightWidget: state.emailReceiverList.value.length < 3 ? Image.asset( 'images/icon_btn_add.png', width: 32.w, height: 32.w, ) : Container(), action: () { if (state.emailReceiverList.value.length < 3) { setState(() { state.emailReceiverList.value.add(1); }); } }), Obx(() => SizedBox( height: state.emailReceiverList.value.length * 62.h, child: ListView.separated( itemCount: state.emailReceiverList.value.length, itemBuilder: (BuildContext context, int index) { return _buildReceiverItem(index, true); }, separatorBuilder: (BuildContext context, int index) { return Divider( height: 1.h, color: AppColors.greyBackgroundColor, ); }, ), )), SizedBox( height: 10.h, ), CommonItem( leftTitel: '短信提醒', rightTitle: '', isHaveLine: true, isHaveDirection: false, isHaveRightWidget: true, rightWidget: state.phoneReceiverList.value.length < 3 ? Image.asset( 'images/icon_btn_add.png', width: 32.w, height: 32.w, ) : Container(), action: () { if (state.phoneReceiverList.value.length < 3) { setState(() { state.phoneReceiverList.value.add(1); }); } }), SizedBox( height: state.phoneReceiverList.value.length * 62.h, child: ListView.separated( itemCount: state.phoneReceiverList.value.length, itemBuilder: (BuildContext context, int index) { return _buildReceiverItem(index, false); }, separatorBuilder: (BuildContext context, int index) { return Divider( height: 1.h, color: AppColors.greyBackgroundColor, ); }, ), ), SizedBox( height: 60.h, ), SubmitBtn( btnName: '确定', onClick: () {}, ) ], ); } Widget _buildReceiverItem(int index, bool isEmail) { return Container( color: Colors.white, child: Row( children: [ GestureDetector( child: SizedBox( // width: 40.w, child: Row( children: [ SizedBox( width: 20.w, ), Image.asset( 'images/icon_massSend_delete.png', width: 26.w, height: 26.w, ) ], ), ), onTap: () { setState(() { if (isEmail) { state.emailReceiverList.value.removeAt(index); } else { state.phoneReceiverList.value.removeAt(index); } }); }, ), Expanded( child: Column( children: [ massSendReceiverCellWidget( leftTitel: TranslationLoader.lanKeys!.receiver!.tr, rightTitle: state.inputEmailStr.value, isHaveLine: true, isHaveRightWidget: true, rightWidget: isEmail ? getEmailTFWidget('请输入Email', 1) : getPhoneWidget('请输入手机号', 1)), Divider( color: AppColors.greyLineColor, indent: 20.w, endIndent: 20.w, height: 1, ), ], )) ], ), ); } // TextEditingController _receiverController(String getStr) { // TextEditingController controller = TextEditingController(text: getStr); // controller.addListener(() { // state.inputEmailStr.value = controller.text; // print(controller.text); // }); // return controller; // } // 接受者邮箱输入框 Widget getEmailTFWidget(String tfStr, int lineIndex) { TextEditingController emailController = TextEditingController(); return SizedBox( height: 50.h, width: 360.w, child: Row( children: [ Expanded( child: TextField( controller: emailController, //输入框一行 maxLines: 1, autofocus: false, textAlign: TextAlign.end, decoration: InputDecoration( //输入里面输入文字内边距设置 contentPadding: const EdgeInsets.only(top: -12.0, bottom: 0.0), hintText: tfStr, hintStyle: TextStyle(fontSize: 22.sp), //不需要输入框下划线 border: InputBorder.none, ), ), ), ], ), ); } // 接受者手机号输入框 Widget getPhoneWidget(String tfStr, int lineIndex) { TextEditingController phoneController = TextEditingController(); return SizedBox( height: 50.h, width: 360.w, child: Row( children: [ Expanded( child: GestureDetector( child: Container( width: 90.w, color: Colors.white, child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Obx(() => Text( '+${state.countryCode}', style: TextStyle( color: AppColors.darkGrayTextColor, fontSize: 20.sp), )), Image.asset( 'images/icon_grayPullDown.png', width: 20.w, height: 20.w, ), ], ), ), onTap: () async { var result = await Get.toNamed(Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; state.countryName.value = result['countryName']; } }, )), SizedBox( width: 5.w, ), SizedBox( width: 180.w, child: TextField( controller: phoneController, //输入框一行 maxLines: 1, autofocus: false, textAlign: TextAlign.end, decoration: InputDecoration( //输入里面输入文字内边距设置 contentPadding: const EdgeInsets.only(top: -12.0, bottom: 0.0), hintText: tfStr, hintStyle: TextStyle(fontSize: 22.sp), //不需要输入框下划线 border: InputBorder.none, ), ), ), ], ), ); } Widget massSendReceiverCellWidget({ String? leftTitel, String? rightTitle, bool? isHaveDirection, bool? isHaveLine, bool? isHaveRightWidget, Widget? rightWidget, Function()? action, double? allHeight, }) { return Column( // mainAxisAlignment: MainAxisAlignment.center, children: [ Container( height: 60.h, color: Colors.white, padding: EdgeInsets.only(right: 20.w), // , top: 20.w, bottom: 20.w child: Row( children: [ SizedBox(width: 20.w), Text(leftTitel!, style: TextStyle(fontSize: 22.sp)), Expanded(child: SizedBox(width: 10.w)), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ isHaveRightWidget! ? rightWidget! : Text( rightTitle ?? "", textAlign: TextAlign.end, // overflow: TextOverflow.ellipsis, // maxLines: 1, style: TextStyle( fontSize: 22.sp, color: AppColors.darkGrayTextColor), ) ], ) ], ), ) ], ); } }