showLeaveSpaceDialog function
void
showLeaveSpaceDialog( - dynamic context,
- dynamic ref,
- String spaceId
)
Implementation
void showLeaveSpaceDialog(BuildContext context, WidgetRef ref, String spaceId) {
showAdaptiveDialog(
barrierDismissible: true,
context: context,
useRootNavigator: false,
builder: (context) => DefaultDialog(
title: Column(
children: <Widget>[
const Icon(Icons.person_remove_outlined),
const SizedBox(height: 5),
Text(
L10n.of(context).leaveSpace,
style: Theme.of(context).textTheme.titleMedium,
),
],
),
subtitle: Text(L10n.of(context).areYouSureYouWantToLeaveSpace),
actions: <Widget>[
OutlinedButton(
onPressed: () => Navigator.pop(context),
child: Text(L10n.of(context).noIStay),
),
ActerDangerActionButton(
key: leaveSpaceYesBtn,
onPressed: () async {
final lang = L10n.of(context);
try {
EasyLoading.show(status: lang.leavingSpace);
final parentIds =
await ref.read(parentIdsProvider(spaceId).future);
final space = await ref.read(spaceProvider(spaceId).future);
await space.leave();
if (!context.mounted) {
return;
}
EasyLoading.showToast(lang.leavingSpaceSuccessful);
for (final parentId in parentIds) {
ref.invalidate(spaceRelationsProvider(parentId));
ref.invalidate(spaceRemoteRelationsProvider(parentId));
}
Navigator.pop(context);
context.goNamed(Routes.dashboard.name);
} catch (e, s) {
_log.severe('Failed to leave space', e, s);
if (!context.mounted) {
EasyLoading.dismiss();
return;
}
EasyLoading.showError(
lang.leavingSpaceFailed(e),
duration: const Duration(seconds: 3),
);
}
},
child: Text(L10n.of(context).yesLeave),
),
],
),
);
}