feat: container builders for form fields

This commit is contained in:
Stein Milder 2022-09-29 12:14:30 +02:00
parent 17c0b28c5c
commit f1d5ec5db9
2 changed files with 46 additions and 30 deletions

View file

@ -18,11 +18,15 @@ class LoginOptions {
this.loginButtonBuilder = _createLoginButton,
this.forgotPasswordButtonBuilder = _createForgotPasswordButton,
this.registrationButtonBuilder = _createRegisterButton,
this.emailInputContainerBuilder = _createEmailInputContainer,
this.passwordInputContainerBuilder = _createPasswordInputContainer,
});
final ButtonBuilder loginButtonBuilder;
final ButtonBuilder registrationButtonBuilder;
final ButtonBuilder forgotPasswordButtonBuilder;
final InputContainerBuilder emailInputContainerBuilder;
final InputContainerBuilder passwordInputContainerBuilder;
final Widget? image;
final Widget? title;
@ -49,6 +53,10 @@ class LoginTranslations {
final String passwordEmpty;
}
Widget _createEmailInputContainer(Widget child) => child;
Widget _createPasswordInputContainer(Widget child) => child;
Widget _createLoginButton(
BuildContext context,
OptionalAsyncCallback onPressed,
@ -97,4 +105,8 @@ typedef ButtonBuilder = Widget Function(
bool isDisabled,
);
typedef InputContainerBuilder = Widget Function(
Widget child,
);
typedef OptionalAsyncCallback = FutureOr<void> Function();

View file

@ -125,6 +125,7 @@ class _EmailPasswordLoginFormState extends State<EmailPasswordLoginForm> {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
options.emailInputContainerBuilder(
TextFormField(
onChanged: _updateCurrentEmail,
validator: _validateEmail,
@ -136,7 +137,9 @@ class _EmailPasswordLoginFormState extends State<EmailPasswordLoginForm> {
label: options.emailLabel,
),
),
),
const SizedBox(height: 24),
options.passwordInputContainerBuilder(
TextFormField(
obscureText: _obscurePassword,
onChanged: _updateCurrentPassword,
@ -162,6 +165,7 @@ class _EmailPasswordLoginFormState extends State<EmailPasswordLoginForm> {
),
),
),
),
const SizedBox(height: 24),
if (widget.onForgotPassword != null) ...[
Align(