Files
Remever/lib/screens/auth/widgets/auth_text_field.dart

65 lines
2.1 KiB
Dart

// Flutter imports:
import 'package:flutter/material.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/typography.dart';
import 'package:remever/components/extensions/context.dart';
class AuthTextField extends StatelessWidget {
const AuthTextField({required this.email, super.key, this.autofocus = true});
final TextEditingController email;
final bool autofocus;
@override
Widget build(BuildContext context) {
final OutlineInputBorder border = OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(8)).r,
borderSide: BorderSide(color: AppColors.gray),
);
return TextFormField(
autofocus: autofocus,
controller: email,
validator: (String? value) {
if (value == null || value == '') return 'Поле не может быть пустым';
if (!value.contains('@') || !value.contains('.')) {
return 'Неверный e-mail';
}
return null;
},
cursorColor: AppColors.primary,
decoration: InputDecoration(
filled: true,
fillColor: AppColors.white,
focusedBorder: border,
enabledBorder: border,
errorBorder: border,
focusedErrorBorder: border,
hintText: 'Введите e-mail',
hintStyle: const TextStyle(fontWeight: FontWeight.w400, height: 1.2),
errorStyle: SemiBold12px().style.copyWith(color: AppColors.info_red),
suffixIconConstraints: const BoxConstraints(minWidth: 0, minHeight: 0),
suffixIcon: Padding(
padding: const EdgeInsets.only(right: 12).r,
child: InkWell(
onTap: () {
email.clear();
},
child: SizedBox.square(
dimension: 24.r,
child: DecoratedBox(
decoration: BoxDecoration(
color: AppColors.bg,
shape: BoxShape.circle,
),
child: Icon(Icons.close, color: AppColors.disabled, size: 16.r),
),
),
),
),
),
);
}
}