对TextField组件进行二次封装
class CTGTextField extends StatelessWidget {
final String? hintText; //hint,默认为空
final Widget? prefixIcon; //左icon图标
final Widget? suffixIcon; //右icon图标
final bool obscureText; //是否明文
final TextEditingController controller;
final TextInputType keyboardType; //键盘类型
final TextInputAction? textInputAction; //输入框类型
final FocusNode? focusNode;
final Function(String)? onSubmitted;
final Function(String)? onChanged;
final bool autofocus;
final bool enabled;
final InputBorder? border;
final InputBorder? enabledBorder;
final InputBorder? focusedBorder;
final EdgeInsetsGeometry? contentPadding;
final TextStyle? style; //文本内容样式
final TextStyle? hintStyle; //hint样式
final int? maxLength; //可输入最大长度
const CTGTextField({
Key? key,
this.hintText,
this.prefixIcon,
this.suffixIcon,
this.obscureText = false,
required this.controller,
this.keyboardType = TextInputType.text,
this.textInputAction,
this.focusNode,
this.onSubmitted,
this.onChanged,
this.autofocus = false,
this.enabled = true,
this.border,
this.enabledBorder,
this.focusedBorder,
this.contentPadding,
this.style =
const TextStyle(color: AppColors.color_333, fontSize: AppFonts.font_15),
this.hintStyle =
const TextStyle(color: AppColors.color_999, fontSize: AppFonts.font_15),
this.maxLength,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextField(
controller: controller,
keyboardType: keyboardType,
textInputAction: textInputAction,
focusNode: focusNode,
onSubmitted: onSubmitted,
onChanged: onChanged,
autofocus: autofocus,
enabled: enabled,
obscureText: obscureText,
style: style,
inputFormatters: [
LengthLimitingTextInputFormatter(maxLength),
],
decoration: InputDecoration(
border: border ?? const OutlineInputBorder(borderSide: BorderSide.none),
enabledBorder: enabledBorder ??
const OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: focusedBorder ??
const OutlineInputBorder(borderSide: BorderSide.none),
hintText: hintText,
prefixIcon: prefixIcon,
suffixIcon: suffixIcon,
contentPadding: EdgeInsets.zero,
hintStyle: hintStyle,
),
);
}
}