diff --git a/avatar_maker/lib/src/customizer/avatar_maker_customizer.dart b/avatar_maker/lib/src/customizer/avatar_maker_customizer.dart index 5e93db1..b856328 100644 --- a/avatar_maker/lib/src/customizer/avatar_maker_customizer.dart +++ b/avatar_maker/lib/src/customizer/avatar_maker_customizer.dart @@ -94,6 +94,8 @@ class _AvatarMakerCustomizerState extends State with SingleTickerProviderStateMixin { late AvatarMakerController avatarMakerController; bool _controllerCreatedInternally = false; + late final VoidCallback _handleControllerChanged; + late final VoidCallback _handleTabChanged; /// Number of displayed categories in the customizer widget. late int nbrDisplayedCategories; @@ -121,22 +123,23 @@ class _AvatarMakerCustomizerState extends State vsync: this, ); - tabController.addListener(() { - setState(() {}); - }); + _handleTabChanged = () { + if (mounted) setState(() {}); + }; + tabController.addListener(_handleTabChanged); // Add listener to the controller - avatarMakerController.addListener(() { - setState(() {}); - }); + _handleControllerChanged = () { + if (mounted) setState(() {}); + }; + avatarMakerController.addListener(_handleControllerChanged); } @override void dispose() { - // Remove the listener - avatarMakerController.removeListener(() { - setState(() {}); - }); + avatarMakerController.removeListener(_handleControllerChanged); + tabController.removeListener(_handleTabChanged); + tabController.dispose(); // Only dispose the controller if we created it if (_controllerCreatedInternally) {