Skip to content

Commit a5c75b8

Browse files
authored
Fix MetadataFields text field values being lost in SupaEmailAuth widget (Fixes #113) (#114)
* Fix metadata field value persistence in SupaEmailAuth widget Implement == operator and hashCode getter in MetaDataField class Update _SupaEmailAuthState to use MetaDataField.key as map key Modify related methods to work with new map structure Ensure consistent hashing and correct retrieval of TextEditingControllers Resolve issue of losing metadata field values during widget lifecycle This change prevents the loss of user input in custom metadata fields by ensuring proper object equality and consistent map key usage. * Remove unecessary equality operator override and hashcode getter.
1 parent 1d7c37c commit a5c75b8

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

lib/src/components/supa_email_auth.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
125125
final _formKey = GlobalKey<FormState>();
126126
final _emailController = TextEditingController();
127127
final _passwordController = TextEditingController();
128-
late final Map<MetaDataField, TextEditingController> _metadataControllers;
128+
late final Map<String, TextEditingController> _metadataControllers;
129129

130130
bool _isLoading = false;
131131

@@ -142,7 +142,8 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
142142
void initState() {
143143
super.initState();
144144
_metadataControllers = Map.fromEntries((widget.metadataFields ?? []).map(
145-
(metadataField) => MapEntry(metadataField, TextEditingController())));
145+
(metadataField) =>
146+
MapEntry(metadataField.key, TextEditingController())));
146147
}
147148

148149
@override
@@ -225,7 +226,7 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
225226
...widget.metadataFields!
226227
.map((metadataField) => [
227228
TextFormField(
228-
controller: _metadataControllers[metadataField],
229+
controller: _metadataControllers[metadataField.key],
229230
textInputAction:
230231
widget.metadataFields!.last == metadataField
231232
? TextInputAction.done
@@ -423,8 +424,7 @@ class _SupaEmailAuthState extends State<SupaEmailAuth> {
423424
Map<String, dynamic> _resolveMetadataFieldsData() {
424425
return widget.metadataFields != null
425426
? _metadataControllers.map<String, dynamic>(
426-
(metaDataField, controller) =>
427-
MapEntry(metaDataField.key, controller.text))
427+
(key, controller) => MapEntry(key, controller.text))
428428
: <String, dynamic>{};
429429
}
430430
}

0 commit comments

Comments
 (0)