Skip to content

Commit ea95f71

Browse files
authored
Merge pull request #493 from Rupamthxt/add-feature-save
Added shortcut key "ctrl + s" for saving projects on the go.
2 parents 2945b72 + 0e933d7 commit ea95f71

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

lib/screens/common_widgets/sidebar_save_button.dart

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,27 @@ import 'package:flutter/material.dart';
33
import 'package:hooks_riverpod/hooks_riverpod.dart';
44
import 'package:apidash/consts.dart';
55
import 'package:apidash/providers/providers.dart';
6-
import 'package:apidash/widgets/widgets.dart';
6+
import 'package:apidash/utils/utils.dart';
77

88
class SaveButton extends ConsumerWidget {
99
const SaveButton({super.key});
1010

1111
@override
1212
Widget build(BuildContext context, WidgetRef ref) {
13-
final overlayWidget = OverlayWidgetTemplate(context: context);
1413
final savingData = ref.watch(saveDataStateProvider);
1514
final hasUnsavedChanges = ref.watch(hasUnsavedChangesProvider);
1615
return TextButton.icon(
1716
onPressed: (savingData || !hasUnsavedChanges)
1817
? null
1918
: () async {
20-
overlayWidget.show(
21-
widget: const SavingOverlay(saveCompleted: false));
22-
23-
await ref
24-
.read(collectionStateNotifierProvider.notifier)
25-
.saveData();
26-
await ref
27-
.read(environmentsStateNotifierProvider.notifier)
28-
.saveEnvironments();
29-
overlayWidget.hide();
30-
overlayWidget.show(
31-
widget: const SavingOverlay(saveCompleted: true));
32-
await Future.delayed(const Duration(seconds: 1));
33-
overlayWidget.hide();
19+
await saveAndShowDialog(context, onSave: () async {
20+
await ref
21+
.read(collectionStateNotifierProvider.notifier)
22+
.saveData();
23+
await ref
24+
.read(environmentsStateNotifierProvider.notifier)
25+
.saveEnvironments();
26+
});
3427
},
3528
icon: const Icon(
3629
Icons.save,

lib/utils/save_utils.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import 'package:apidash_design_system/apidash_design_system.dart';
2+
import 'package:flutter/foundation.dart';
23
import 'package:flutter/material.dart';
34
import 'package:flutter/services.dart';
45
import 'package:apidash/utils/utils.dart';
6+
import 'package:apidash/widgets/widgets.dart';
57

68
Future<void> saveCollection(
79
Map<String, dynamic> data,
@@ -49,3 +51,16 @@ Future<void> saveToDownloads(
4951
sm.hideCurrentSnackBar();
5052
sm.showSnackBar(getSnackBar(message, small: false));
5153
}
54+
55+
Future<void> saveAndShowDialog(
56+
BuildContext context, {
57+
AsyncCallback? onSave,
58+
}) async {
59+
final overlayWidget = OverlayWidgetTemplate(context: context);
60+
overlayWidget.show(widget: const SavingOverlay(saveCompleted: false));
61+
await onSave?.call();
62+
overlayWidget.hide();
63+
overlayWidget.show(widget: const SavingOverlay(saveCompleted: true));
64+
await Future.delayed(const Duration(seconds: 1));
65+
overlayWidget.hide();
66+
}

0 commit comments

Comments
 (0)