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

View file

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