File tree 2 files changed +24
-16
lines changed
2 files changed +24
-16
lines changed Original file line number Diff line number Diff line change @@ -3,34 +3,27 @@ import 'package:flutter/material.dart';
3
3
import 'package:hooks_riverpod/hooks_riverpod.dart' ;
4
4
import 'package:apidash/consts.dart' ;
5
5
import 'package:apidash/providers/providers.dart' ;
6
- import 'package:apidash/widgets/widgets .dart' ;
6
+ import 'package:apidash/utils/utils .dart' ;
7
7
8
8
class SaveButton extends ConsumerWidget {
9
9
const SaveButton ({super .key});
10
10
11
11
@override
12
12
Widget build (BuildContext context, WidgetRef ref) {
13
- final overlayWidget = OverlayWidgetTemplate (context: context);
14
13
final savingData = ref.watch (saveDataStateProvider);
15
14
final hasUnsavedChanges = ref.watch (hasUnsavedChangesProvider);
16
15
return TextButton .icon (
17
16
onPressed: (savingData || ! hasUnsavedChanges)
18
17
? null
19
18
: () 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
+ });
34
27
},
35
28
icon: const Icon (
36
29
Icons .save,
Original file line number Diff line number Diff line change 1
1
import 'package:apidash_design_system/apidash_design_system.dart' ;
2
+ import 'package:flutter/foundation.dart' ;
2
3
import 'package:flutter/material.dart' ;
3
4
import 'package:flutter/services.dart' ;
4
5
import 'package:apidash/utils/utils.dart' ;
6
+ import 'package:apidash/widgets/widgets.dart' ;
5
7
6
8
Future <void > saveCollection (
7
9
Map <String , dynamic > data,
@@ -49,3 +51,16 @@ Future<void> saveToDownloads(
49
51
sm.hideCurrentSnackBar ();
50
52
sm.showSnackBar (getSnackBar (message, small: false ));
51
53
}
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
+ }
You can’t perform that action at this time.
0 commit comments