diff --git a/hesabixUI/hesabix_ui/lib/pages/business/users_permissions_page.dart b/hesabixUI/hesabix_ui/lib/pages/business/users_permissions_page.dart index 5143a656..8b79d169 100755 --- a/hesabixUI/hesabix_ui/lib/pages/business/users_permissions_page.dart +++ b/hesabixUI/hesabix_ui/lib/pages/business/users_permissions_page.dart @@ -1047,6 +1047,7 @@ class _PermissionsDialog extends StatefulWidget { class _PermissionsDialogState extends State<_PermissionsDialog> { late Map _currentPermissions; + bool _permissionsInitialized = false; bool _isUpdating = false; late bool _membershipUnlimited; DateTime? _membershipEndDate; @@ -1055,11 +1056,22 @@ class _PermissionsDialogState extends State<_PermissionsDialog> { @override void initState() { super.initState(); - _currentPermissions = _mergePermissions(widget.user.permissions); _membershipEndDate = widget.user.membershipExpiresAt; _membershipUnlimited = widget.user.membershipUnlimited; } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + if (_permissionsInitialized) return; + + _currentPermissions = _mergePermissions( + widget.user.permissions, + AppLocalizations.of(context), + ); + _permissionsInitialized = true; + } + /// ساختار کامل دسترسی‌های سیستم Map> _getAllPermissions(AppLocalizations t) { return { @@ -1334,8 +1346,10 @@ class _PermissionsDialogState extends State<_PermissionsDialog> { } /// ادغام دسترسی‌های دیتابیس با ساختار کامل - Map _mergePermissions(Map dbPermissions) { - final t = AppLocalizations.of(context); + Map _mergePermissions( + Map dbPermissions, + AppLocalizations t, + ) { final allPermissions = _getAllPermissions(t); final mergedPermissions = {}; @@ -1717,8 +1731,11 @@ class _PermissionsDialogState extends State<_PermissionsDialog> { ), ), ), - Tooltip( - message: t.dialogClose, + // Flutter 3.41.1 may corrupt OverlayPortal element state if a + // tooltip is visible while its dialog is being dismissed. + Semantics( + label: t.dialogClose, + button: true, child: IconButton( visualDensity: VisualDensity.compact, padding: const EdgeInsets.all(6),