Skip to content

Commit 91c982b

Browse files
fix(auth): remove listener on dispose and only call setState when mounted (#419)
1 parent 93bfe60 commit 91c982b

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

packages/firebase_ui_auth/lib/src/screens/profile_screen.dart

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -351,11 +351,27 @@ class _EmailVerificationBadge extends StatefulWidget {
351351
}
352352

353353
class _EmailVerificationBadgeState extends State<_EmailVerificationBadge> {
354-
late final service = EmailVerificationController(widget.auth)
355-
..addListener(() {
356-
setState(() {});
357-
})
358-
..reload();
354+
late final EmailVerificationController service;
355+
late final VoidCallback listener;
356+
357+
@override
358+
void initState() {
359+
super.initState();
360+
listener = () {
361+
if (mounted) {
362+
setState(() {});
363+
}
364+
};
365+
service = EmailVerificationController(widget.auth)
366+
..addListener(listener)
367+
..reload();
368+
}
369+
370+
@override
371+
void dispose() {
372+
service.removeListener(listener);
373+
super.dispose();
374+
}
359375

360376
EmailVerificationState get state => service.state;
361377

0 commit comments

Comments
 (0)