@@ -214,6 +214,9 @@ class SupaEmailAuth extends StatefulWidget {
214
214
final Widget ? prefixIconEmail;
215
215
final Widget ? prefixIconPassword;
216
216
217
+ /// Whether the confirm password field should be displayed
218
+ final bool showConfirmPasswordField;
219
+
217
220
/// {@macro supa_email_auth}
218
221
const SupaEmailAuth ({
219
222
super .key,
@@ -232,6 +235,7 @@ class SupaEmailAuth extends StatefulWidget {
232
235
this .isInitiallySigningIn = true ,
233
236
this .prefixIconEmail = const Icon (Icons .email),
234
237
this .prefixIconPassword = const Icon (Icons .lock),
238
+ this .showConfirmPasswordField = false ,
235
239
});
236
240
237
241
@override
@@ -242,6 +246,7 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
242
246
final _formKey = GlobalKey <FormState >();
243
247
final _emailController = TextEditingController ();
244
248
final _passwordController = TextEditingController ();
249
+ final _confirmPasswordController = TextEditingController ();
245
250
late bool _isSigningIn;
246
251
late final Map <String , MetadataController > _metadataControllers;
247
252
@@ -271,6 +276,7 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
271
276
void dispose () {
272
277
_emailController.dispose ();
273
278
_passwordController.dispose ();
279
+ _confirmPasswordController.dispose ();
274
280
for (final controller in _metadataControllers.values) {
275
281
if (controller is TextEditingController ) {
276
282
controller.dispose ();
@@ -345,6 +351,23 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
345
351
}
346
352
},
347
353
),
354
+ if (widget.showConfirmPasswordField && ! _isSigningIn) ...[
355
+ spacer (16 ),
356
+ TextFormField (
357
+ controller: _confirmPasswordController,
358
+ decoration: InputDecoration (
359
+ prefixIcon: widget.prefixIconPassword,
360
+ label: Text (localization.confirmPassword),
361
+ ),
362
+ obscureText: true ,
363
+ validator: (value) {
364
+ if (value != _passwordController.text) {
365
+ return localization.confirmPasswordError;
366
+ }
367
+ return null ;
368
+ },
369
+ ),
370
+ ],
348
371
spacer (16 ),
349
372
if (widget.metadataFields != null && ! _isSigningIn)
350
373
...widget.metadataFields!
0 commit comments