import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:keyboard/resource/string.gen.dart'; import 'package:keyboard/utils/toast_util.dart'; import '../resource/assets.gen.dart'; import '../resource/colors.gen.dart'; import '../utils/styles.dart'; class CustomLabelDialog { static const String tag = 'CustomLabelDialog'; // 文本是否为空 static void show({ String? title, required Function(String) clickCallback, required String hintText, required int maxLength, }) { TextEditingController textController = TextEditingController(); RxBool isTextEmpty = true.obs; textController.addListener(() { isTextEmpty.value = textController.text.trim().isEmpty; }); SmartDialog.show( tag: tag, alignment: Alignment.center, backType: SmartBackType.block, clickMaskDismiss: true, maskColor: ColorName.black70, builder: (_) { return Container( width: double.infinity, margin: EdgeInsets.symmetric(horizontal: 31.w), decoration: ShapeDecoration( color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.r), ), ), child: Stack( children: [ Container( padding: EdgeInsets.symmetric( horizontal: 16.w, vertical: 24.h, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( title ?? StringName.customLabel, style: TextStyle( color: Colors.black.withAlpha(204), fontSize: 16.sp, fontWeight: FontWeight.w500, ), ), SizedBox(height: 16.h), Container( height: 48.h, alignment: Alignment.center, decoration: ShapeDecoration( color: const Color(0xFFF5F4F9), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(31.r), ), ), child: TextField( controller: textController, maxLength: maxLength, maxLines: 1, scrollPhysics: const BouncingScrollPhysics(), textAlign: TextAlign.center, textAlignVertical: TextAlignVertical.center, decoration: InputDecoration( isDense: true, counterText: "", hintText: hintText, hintStyle: TextStyle( color: Colors.black.withAlpha(66), ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.r), borderSide: BorderSide.none, // 移除边框线 ), filled: true, fillColor: const Color(0xFFF5F4F9), ), ), ), SizedBox(height: 24.h), Obx(() { return Container( height: 48.h, width: double.infinity, decoration: isTextEmpty.value ? Styles.getInactiveButtonDecoration( 31.r, ) : Styles.getActivateButtonDecoration( 31.r, ), child: TextButton( onPressed: () { if (textController.text.isEmpty) { return ToastUtil.show(hintText); } if (textController.text.length > maxLength) { return ToastUtil.show( '最多$maxLength个字哦~'); } clickCallback(textController.text.trim()); SmartDialog.dismiss(); }, child: Text( StringName.customLabelSave, style: TextStyle( color: Colors.white, fontSize: 16.sp, fontWeight: FontWeight.w500, ), ), ), ); }), ], ), ), Positioned( right: 14, top: 14, child: GestureDetector( onTap: () { SmartDialog.dismiss(); }, child: Assets.images.iconCustomDialogClose.image( width: 24.w, height: 24.h, ), ), ), ], ), ); }, ); } }