add save as dialog for seed on desktop (#2753)
malik1004x committed
Dec 19, 2025 at 21:30 UTC
fb6054cb5d0892403a1b1eecfcae885c8578fe49
1 file changed
+30
-4
lib/src/screens/seed/wallet_seed_page.dart
+30
-4
@@ -1,11 +1,15 @@
1
+import 'dart:io';
2
+
3
import 'package:cake_wallet/routes.dart';
4
import 'package:cake_wallet/src/widgets/seedphrase_grid_widget.dart';
5
import 'package:cake_wallet/src/widgets/warning_box_widget.dart';
6
import 'package:cake_wallet/utils/clipboard_util.dart';
7
import 'package:cake_wallet/utils/share_util.dart';
8
import 'package:cake_wallet/utils/show_bar.dart';
9
+import 'package:flutter/foundation.dart';
10
import 'package:flutter/material.dart';
11
import 'package:flutter/services.dart';
12
+import "package:file_picker/file_picker.dart";
13
import 'package:flutter_mobx/flutter_mobx.dart';
14
import 'package:cake_wallet/generated/i18n.dart';
15
import 'package:cake_wallet/src/widgets/primary_button.dart';
@@ -104,10 +108,7 @@ class WalletSeedPage extends BasePage {
108
child: PrimaryButton(
109
key: ValueKey('wallet_seed_page_save_seeds_button_key'),
110
onPressed: () {
107
- ShareUtil.share(
108
- text: walletSeedViewModel.seed,
109
- context: context,
110
- );
111
+ _shareSeed(context);
112
},
113
text: S.of(context).save,
114
color: Theme.of(context).colorScheme.surfaceContainer,
@@ -139,4 +140,29 @@ class WalletSeedPage extends BasePage {
140
),
141
);
142
}
143
+
144
+ void _shareSeed(BuildContext context) async {
145
+ switch(defaultTargetPlatform) {
146
+ case TargetPlatform.android:
147
+ case TargetPlatform.iOS:
148
+ ShareUtil.share(
149
+ text: walletSeedViewModel.seed,
150
+ context: context,
151
+ );
152
+ break;
153
+ case TargetPlatform.macOS:
154
+ case TargetPlatform.windows:
155
+ case TargetPlatform.linux:
156
+ final path = await FilePicker.platform.saveFile(
157
+ dialogTitle: "Save seed as",
158
+ fileName: "${walletSeedViewModel.name}-seed.txt",
159
+ );
160
+ if(path != null) {
161
+ final file = File(path);
162
+ await file.writeAsString(walletSeedViewModel.seed);
163
+ }
164
+ default:
165
+break;
166
+ }
167
+ }
168
}