diff --git a/lib/src/screens/seed/wallet_seed_page.dart b/lib/src/screens/seed/wallet_seed_page.dart index 1101097f9..b73c13c14 100644 --- a/lib/src/screens/seed/wallet_seed_page.dart +++ b/lib/src/screens/seed/wallet_seed_page.dart @@ -1,11 +1,15 @@ +import 'dart:io'; + import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/widgets/seedphrase_grid_widget.dart'; import 'package:cake_wallet/src/widgets/warning_box_widget.dart'; import 'package:cake_wallet/utils/clipboard_util.dart'; import 'package:cake_wallet/utils/share_util.dart'; import 'package:cake_wallet/utils/show_bar.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import "package:file_picker/file_picker.dart"; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; @@ -104,10 +108,7 @@ class WalletSeedPage extends BasePage { child: PrimaryButton( key: ValueKey('wallet_seed_page_save_seeds_button_key'), onPressed: () { - ShareUtil.share( - text: walletSeedViewModel.seed, - context: context, - ); + _shareSeed(context); }, text: S.of(context).save, color: Theme.of(context).colorScheme.surfaceContainer, @@ -139,4 +140,29 @@ class WalletSeedPage extends BasePage { ), ); } + + void _shareSeed(BuildContext context) async { + switch(defaultTargetPlatform) { + case TargetPlatform.android: + case TargetPlatform.iOS: + ShareUtil.share( + text: walletSeedViewModel.seed, + context: context, + ); + break; + case TargetPlatform.macOS: + case TargetPlatform.windows: + case TargetPlatform.linux: + final path = await FilePicker.platform.saveFile( + dialogTitle: "Save seed as", + fileName: "${walletSeedViewModel.name}-seed.txt", + ); + if(path != null) { + final file = File(path); + await file.writeAsString(walletSeedViewModel.seed); + } + default: +break; + } + } }