diff --git a/lib/screens/user_profile_screen.dart b/lib/screens/user_profile_screen.dart index 2f694d2..66abb89 100644 --- a/lib/screens/user_profile_screen.dart +++ b/lib/screens/user_profile_screen.dart @@ -160,36 +160,43 @@ class _UserProfileScreenState extends State { return {}; }); myCircles.sort((g1, g2) => g1.name.compareTo(g2.name)); + final circlesWidgets = myCircles.map((g) { return CheckboxListTile( title: Text(g.name), value: usersCircles.contains(g), - onChanged: (bool? value) async { - if (isUpdating) { - return; - } + onChanged: isUpdating + ? null + : (bool? value) async { + if (isUpdating) { + return; + } - final isAdding = value == true; - final confirm = await showYesNoDialog( - context, - isAdding - ? 'Add user to ${g.name}' - : 'Remove user from ${g.name}'); - if (confirm != true) { - return; - } - setState(() { - isUpdating = true; - }); - if (isAdding) { - await manager.addUserToCircle(g, profile); - } else { - await manager.removeUserFromCircle(g, profile); - } - setState(() { - isUpdating = false; - }); - }, + final isAdding = value == true; + final confirm = await showYesNoDialog( + context, + isAdding + ? 'Add user to ${g.name}' + : 'Remove user from ${g.name}'); + if (confirm != true) { + return; + } + setState(() { + isUpdating = true; + }); + if (isAdding) { + await manager.addUserToCircle(g, profile); + } else { + await manager.removeUserFromCircle(g, profile); + } + if (mounted) { + buildSnackbar(context, "User's Circles Updated"); + } + + setState(() { + isUpdating = false; + }); + }, ); }).toList(); return Column(