mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-16 17:27:39 +00:00
consistent copy and qr buttons in back screen across platforms
This commit is contained in:
parent
bfd2845c4b
commit
23f07334a6
2 changed files with 47 additions and 67 deletions
|
@ -13,7 +13,6 @@ import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
|
||||||
|
|
||||||
import '../../../../app_config.dart';
|
import '../../../../app_config.dart';
|
||||||
import '../../../../models/keys/cw_key_data.dart';
|
import '../../../../models/keys/cw_key_data.dart';
|
||||||
|
@ -32,6 +31,8 @@ import '../../../../widgets/background.dart';
|
||||||
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
|
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
|
||||||
import '../../../../widgets/custom_buttons/blue_text_button.dart';
|
import '../../../../widgets/custom_buttons/blue_text_button.dart';
|
||||||
import '../../../../widgets/custom_buttons/simple_copy_button.dart';
|
import '../../../../widgets/custom_buttons/simple_copy_button.dart';
|
||||||
|
import '../../../../widgets/desktop/primary_button.dart';
|
||||||
|
import '../../../../widgets/desktop/secondary_button.dart';
|
||||||
import '../../../../widgets/detail_item.dart';
|
import '../../../../widgets/detail_item.dart';
|
||||||
import '../../../../widgets/qr.dart';
|
import '../../../../widgets/qr.dart';
|
||||||
import '../../../../widgets/rounded_white_container.dart';
|
import '../../../../widgets/rounded_white_container.dart';
|
||||||
|
@ -47,7 +48,6 @@ class WalletBackupView extends ConsumerWidget {
|
||||||
required this.walletId,
|
required this.walletId,
|
||||||
required this.mnemonic,
|
required this.mnemonic,
|
||||||
this.frostWalletData,
|
this.frostWalletData,
|
||||||
this.clipboardInterface = const ClipboardWrapper(),
|
|
||||||
this.keyData,
|
this.keyData,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ class WalletBackupView extends ConsumerWidget {
|
||||||
String keys,
|
String keys,
|
||||||
({String config, String keys})? prevGen,
|
({String config, String keys})? prevGen,
|
||||||
})? frostWalletData;
|
})? frostWalletData;
|
||||||
final ClipboardInterface clipboardInterface;
|
|
||||||
final KeyDataInterface? keyData;
|
final KeyDataInterface? keyData;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -107,40 +106,6 @@ class WalletBackupView extends ConsumerWidget {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (!frost && keyData == null)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(10),
|
|
||||||
child: AspectRatio(
|
|
||||||
aspectRatio: 1,
|
|
||||||
child: AppBarIconButton(
|
|
||||||
color:
|
|
||||||
Theme.of(context).extension<StackColors>()!.background,
|
|
||||||
shadows: const [],
|
|
||||||
icon: SvgPicture.asset(
|
|
||||||
Assets.svg.copy,
|
|
||||||
width: 20,
|
|
||||||
height: 20,
|
|
||||||
color: Theme.of(context)
|
|
||||||
.extension<StackColors>()!
|
|
||||||
.topNavIconPrimary,
|
|
||||||
),
|
|
||||||
onPressed: () async {
|
|
||||||
await clipboardInterface
|
|
||||||
.setData(ClipboardData(text: mnemonic.join(" ")));
|
|
||||||
if (context.mounted) {
|
|
||||||
unawaited(
|
|
||||||
showFloatingFlushBar(
|
|
||||||
type: FlushBarType.info,
|
|
||||||
message: "Copied to clipboard",
|
|
||||||
iconAsset: Assets.svg.copy,
|
|
||||||
context: context,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: Padding(
|
body: Padding(
|
||||||
|
@ -161,19 +126,22 @@ class WalletBackupView extends ConsumerWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _Mnemonic extends ConsumerWidget {
|
class _Mnemonic extends ConsumerWidget {
|
||||||
const _Mnemonic({super.key, required this.walletId, required this.mnemonic});
|
const _Mnemonic({
|
||||||
|
super.key,
|
||||||
|
required this.walletId,
|
||||||
|
required this.mnemonic,
|
||||||
|
this.clipboardInterface = const ClipboardWrapper(),
|
||||||
|
});
|
||||||
|
|
||||||
final String walletId;
|
final String walletId;
|
||||||
final List<String> mnemonic;
|
final List<String> mnemonic;
|
||||||
|
final ClipboardInterface clipboardInterface;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(
|
|
||||||
height: 4,
|
|
||||||
),
|
|
||||||
Text(
|
Text(
|
||||||
ref.watch(pWalletName(walletId)),
|
ref.watch(pWalletName(walletId)),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
|
@ -221,10 +189,28 @@ class _Mnemonic extends ConsumerWidget {
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 12,
|
height: 12,
|
||||||
),
|
),
|
||||||
TextButton(
|
SecondaryButton(
|
||||||
style: Theme.of(context)
|
label: "Copy",
|
||||||
.extension<StackColors>()!
|
onPressed: () async {
|
||||||
.getPrimaryEnabledButtonStyle(context),
|
await clipboardInterface
|
||||||
|
.setData(ClipboardData(text: mnemonic.join(" ")));
|
||||||
|
if (context.mounted) {
|
||||||
|
unawaited(
|
||||||
|
showFloatingFlushBar(
|
||||||
|
type: FlushBarType.info,
|
||||||
|
message: "Copied to clipboard",
|
||||||
|
iconAsset: Assets.svg.copy,
|
||||||
|
context: context,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
PrimaryButton(
|
||||||
|
label: "Show QR Code",
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
final String data = AddressUtils.encodeQRSeedData(mnemonic);
|
final String data = AddressUtils.encodeQRSeedData(mnemonic);
|
||||||
|
|
||||||
|
@ -293,10 +279,6 @@ class _Mnemonic extends ConsumerWidget {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Text(
|
|
||||||
"Show QR Code",
|
|
||||||
style: STextStyles.button(context),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
@ -310,8 +292,6 @@ class _FrostKeys extends StatelessWidget {
|
||||||
this.frostWalletData,
|
this.frostWalletData,
|
||||||
});
|
});
|
||||||
|
|
||||||
static const String routeName = "/walletBackup";
|
|
||||||
|
|
||||||
final String walletId;
|
final String walletId;
|
||||||
final ({
|
final ({
|
||||||
String myName,
|
String myName,
|
||||||
|
|
|
@ -277,22 +277,6 @@ class _Mnemonic extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: SecondaryButton(
|
child: SecondaryButton(
|
||||||
label: "Show QR code",
|
|
||||||
onPressed: () {
|
|
||||||
// TODO: address utils
|
|
||||||
final String value = AddressUtils.encodeQRSeedData(words);
|
|
||||||
Navigator.of(context).pushNamed(
|
|
||||||
QRCodeDesktopPopupContent.routeName,
|
|
||||||
arguments: value,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
width: 16,
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: PrimaryButton(
|
|
||||||
label: "Copy",
|
label: "Copy",
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await clipboardInterface.setData(
|
await clipboardInterface.setData(
|
||||||
|
@ -311,6 +295,22 @@ class _Mnemonic extends StatelessWidget {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
const SizedBox(
|
||||||
|
width: 16,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: PrimaryButton(
|
||||||
|
label: "Show QR code",
|
||||||
|
onPressed: () {
|
||||||
|
// TODO: address utils
|
||||||
|
final String value = AddressUtils.encodeQRSeedData(words);
|
||||||
|
Navigator.of(context).pushNamed(
|
||||||
|
QRCodeDesktopPopupContent.routeName,
|
||||||
|
arguments: value,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue