Files
elcaribe/news-app/lib/ui/screens/auth/Widgets/setPassword.dart

82 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:news/utils/uiUtils.dart';
import 'package:news/utils/validators.dart';
import 'fieldFocusChange.dart';
class SetPassword extends StatefulWidget {
final FocusNode currFocus;
final FocusNode? nextFocus;
final TextEditingController passC;
late String pass;
final double topPad;
final bool isLogin;
SetPassword({super.key, required this.currFocus, this.nextFocus, required this.passC, required this.pass, required this.topPad, required this.isLogin});
@override
State<StatefulWidget> createState() {
return _SetPassState();
}
}
class _SetPassState extends State<SetPassword> {
bool isObscure = true;
@override
Widget build(BuildContext context) {
return StatefulBuilder(builder: (context, StateSetter setStater) {
return Padding(
padding: EdgeInsets.only(top: widget.topPad),
child: TextFormField(
focusNode: widget.currFocus,
textInputAction: widget.isLogin ? TextInputAction.done : TextInputAction.next,
controller: widget.passC,
obscureText: isObscure,
style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: UiUtils.getColorScheme(context).primaryContainer,
),
validator: (val) => Validators.passValidation(val!, context),
onFieldSubmitted: (v) {
if (!widget.isLogin) {
fieldFocusChange(context, widget.currFocus, widget.nextFocus!);
}
},
onChanged: (String value) {
widget.pass = value;
setStater(() {});
},
decoration: InputDecoration(
hintText: UiUtils.getTranslatedLabel(context, 'passLbl'),
hintStyle: Theme.of(context).textTheme.titleMedium?.copyWith(
color: UiUtils.getColorScheme(context).primaryContainer.withOpacity(0.5),
),
suffixIcon: Padding(
padding: const EdgeInsetsDirectional.only(end: 12.0),
child: IconButton(
icon: isObscure
? Icon(Icons.visibility_rounded, size: 20, color: UiUtils.getColorScheme(context).primaryContainer.withOpacity(0.6))
: Icon(Icons.visibility_off_rounded, size: 20, color: UiUtils.getColorScheme(context).primaryContainer.withOpacity(0.6)),
splashColor: Colors.transparent,
onPressed: () {
setState(() => isObscure = !isObscure);
},
)),
filled: true,
fillColor: Theme.of(context).colorScheme.surface,
contentPadding: const EdgeInsets.symmetric(horizontal: 25, vertical: 17),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: UiUtils.getColorScheme(context).outline.withOpacity(0.7)),
borderRadius: BorderRadius.circular(10.0),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(10.0),
),
),
),
);
});
}
}