83 lines
1.7 KiB
Dart
83 lines
1.7 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:hum/core/constants/app_theme.dart';
|
|
|
|
class TXTFieldInput
|
|
extends
|
|
StatefulWidget {
|
|
const TXTFieldInput({
|
|
super.key,
|
|
this.placeholder = '',
|
|
this.inputType = TextInputType.text,
|
|
this.password = false,
|
|
required this.controller,
|
|
});
|
|
|
|
final String placeholder;
|
|
final TextInputType inputType;
|
|
final bool password;
|
|
final TextEditingController controller;
|
|
// final ValueKey fieldId;
|
|
|
|
@override
|
|
State<
|
|
TXTFieldInput
|
|
>
|
|
createState() => _TXTFieldInputState();
|
|
}
|
|
|
|
class _TXTFieldInputState
|
|
extends
|
|
State<
|
|
TXTFieldInput
|
|
> {
|
|
bool _obscure = false;
|
|
|
|
@override
|
|
void initState() {
|
|
_obscure = widget.password
|
|
? true
|
|
: false;
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
Widget build(
|
|
BuildContext context,
|
|
) {
|
|
return CupertinoTextField(
|
|
controller: widget.controller,
|
|
key: widget.key,
|
|
placeholder: widget.placeholder,
|
|
keyboardType: widget.inputType,
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: 16,
|
|
vertical: 12,
|
|
),
|
|
decoration: BoxDecoration(
|
|
color: CupertinoDynamicColor.resolve(
|
|
colorBackground,
|
|
context,
|
|
),
|
|
borderRadius: BorderRadius.circular(
|
|
roundLarge,
|
|
),
|
|
),
|
|
|
|
obscureText: _obscure,
|
|
suffix: widget.password
|
|
? CupertinoButton(
|
|
padding: EdgeInsets.zero,
|
|
onPressed: () => setState(
|
|
() => _obscure = !_obscure,
|
|
),
|
|
child: Icon(
|
|
_obscure
|
|
? CupertinoIcons.eye
|
|
: CupertinoIcons.eye_slash,
|
|
),
|
|
)
|
|
: null,
|
|
);
|
|
}
|
|
}
|