import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; /* * 登录注册页面 input * */ typedef BlockStrCallback = void Function(dynamic textStr); typedef BlockClickCallback = void Function(); class LoginInput extends StatelessWidget { TextEditingController? controller; FocusNode? focusNode; List? inputFormatters; TextInputType? keyboardType; Color? background; String? hintText; bool? isHaveLeftWidget; Widget? leftWidget; String? label; bool? isPwd; bool? isSuffixIcon; Widget? rightSlot; BlockStrCallback? onchangeAction; BlockClickCallback? onTapAction; LoginInput( {Key? key, required this.controller, this.focusNode, this.rightSlot, this.label, this.isPwd, this.isSuffixIcon, this.inputFormatters, this.keyboardType, this.background, this.hintText, this.isHaveLeftWidget = true, this.leftWidget, this.onchangeAction, this.onTapAction}) : super(key: key); @override Widget build(BuildContext context) { return Container( // color: Colors.red, // width: 1.sp, // height: 200.h, child: Column( children: [ TextField( //输入框一行 maxLines: 1, controller: controller, focusNode: focusNode, onChanged: onchangeAction, onTap: onTapAction, autofocus: false, inputFormatters: inputFormatters, decoration: InputDecoration( //输入里面输入文字内边距设置 contentPadding: const EdgeInsets.only( top: 8.0, left: -19.0, right: -15.0, bottom: 8.0), labelText: label, labelStyle: TextStyle(fontSize: 22.sp), hintStyle: TextStyle(fontSize: 22.sp), hintText: hintText, //不需要输入框下划线 border: InputBorder.none, suffixIcon: (isSuffixIcon ?? false) ? IconButton( icon: const Icon(Icons.clear), onPressed: controller!.clear, ) : null, //左边图标设置 icon: isHaveLeftWidget == true ? leftWidget : SizedBox( width: 20.w, height: 40.w, ), ), obscureText: isPwd ?? false, ), Container( height: 0.5.h, color: Colors.grey, ), ], ), ); } }