Merge pull request #2 from Iconica-Development/feature/container-builders-for-form-fields

feat: container builders for form fields
This commit is contained in:
FlutterJoey 2022-09-29 15:56:15 +02:00 committed by GitHub
commit 015a6d5f14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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(