new: switch of displaying pwd

This commit is contained in:
lollipopkit
2023-12-11 11:31:05 +08:00
parent ce9929e93f
commit 2b3f70393b

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'cardx.dart'; import 'cardx.dart';
class Input extends StatelessWidget { class Input extends StatefulWidget {
final TextEditingController? controller; final TextEditingController? controller;
final int maxLines; final int maxLines;
final int? minLines; final int? minLines;
@@ -19,6 +19,7 @@ class Input extends StatelessWidget {
final String? errorText; final String? errorText;
final Widget? prefix; final Widget? prefix;
final bool autoFocus; final bool autoFocus;
final void Function(bool)? onViewPwdTap;
const Input({ const Input({
super.key, super.key,
@@ -38,32 +39,60 @@ class Input extends StatelessWidget {
this.errorText, this.errorText,
this.prefix, this.prefix,
this.autoFocus = false, this.autoFocus = false,
this.onViewPwdTap,
}); });
@override
State<StatefulWidget> createState() => _InputState();
}
class _InputState extends State<Input> {
bool _obscureText = false;
@override
void initState() {
super.initState();
_obscureText = widget.obscureText;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CardX( return CardX(
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 17), padding: const EdgeInsets.symmetric(horizontal: 17),
child: TextField( child: TextField(
maxLines: maxLines, controller: widget.controller,
minLines: minLines, maxLines: widget.maxLines,
onSubmitted: onSubmitted, minLines: widget.minLines,
onChanged: onChanged, obscureText: _obscureText,
keyboardType: type,
focusNode: node,
autofocus: autoFocus,
autocorrect: autoCorrect,
enableSuggestions: suggestiion,
decoration: InputDecoration( decoration: InputDecoration(
label: label != null ? Text(label!) : null, hintText: widget.hint,
hintText: hint, labelText: widget.label,
icon: icon != null ? Icon(icon) : null, errorText: widget.errorText,
border: InputBorder.none, border: InputBorder.none,
errorText: errorText, prefixIcon: widget.icon == null ? null : Icon(widget.icon),
prefix: prefix, prefix: widget.prefix,
suffixIcon: widget.obscureText
? IconButton(
icon: Icon(_obscureText ? Icons.visibility : Icons.visibility_off),
onPressed: () {
setState(() {
_obscureText = !_obscureText;
});
if (widget.onViewPwdTap != null) {
widget.onViewPwdTap?.call(_obscureText);
}
},
)
: null,
), ),
controller: controller, keyboardType: widget.type,
obscureText: obscureText, focusNode: widget.node,
autocorrect: widget.autoCorrect,
enableSuggestions: widget.suggestiion,
autofocus: widget.autoFocus,
onSubmitted: widget.onSubmitted,
onChanged: widget.onChanged,
), ),
), ),
); );