app-starlock/star_lock/lib/tools/tf_loginInput.dart
2024-04-15 16:20:22 +08:00

99 lines
2.7 KiB
Dart

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<TextInputFormatter>? 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,
),
],
),
);
}
}