mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-03-22 15:19:11 +00:00
add qr dialog for mobile
This commit is contained in:
parent
6f3691625a
commit
d91df1165f
2 changed files with 139 additions and 3 deletions
|
@ -57,6 +57,7 @@ import 'package:stackwallet/widgets/custom_buttons/app_bar_icon_button.dart';
|
||||||
import 'package:stackwallet/widgets/custom_buttons/blue_text_button.dart';
|
import 'package:stackwallet/widgets/custom_buttons/blue_text_button.dart';
|
||||||
import 'package:stackwallet/widgets/custom_loading_overlay.dart';
|
import 'package:stackwallet/widgets/custom_loading_overlay.dart';
|
||||||
import 'package:stackwallet/widgets/loading_indicator.dart';
|
import 'package:stackwallet/widgets/loading_indicator.dart';
|
||||||
|
import 'package:stackwallet/widgets/qr_dialog.dart';
|
||||||
import 'package:stackwallet/widgets/stack_dialog.dart';
|
import 'package:stackwallet/widgets/stack_dialog.dart';
|
||||||
import 'package:stackwallet/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart';
|
import 'package:stackwallet/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart';
|
||||||
import 'package:stackwallet/widgets/wallet_navigation_bar/components/icons/coin_control_nav_icon.dart';
|
import 'package:stackwallet/widgets/wallet_navigation_bar/components/icons/coin_control_nav_icon.dart';
|
||||||
|
@ -950,9 +951,10 @@ class _WalletViewState extends ConsumerState<WalletView> {
|
||||||
showDialog<dynamic>(
|
showDialog<dynamic>(
|
||||||
barrierDismissible: true,
|
barrierDismissible: true,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => StackDialog(
|
builder: (_) => QrDialog(
|
||||||
title: "Wallet xPub",
|
title: "Wallet xPub",
|
||||||
message: xpub,
|
// message: xpub,
|
||||||
|
qr: xpub,
|
||||||
leftButton: TextButton(
|
leftButton: TextButton(
|
||||||
style: Theme.of(context)
|
style: Theme.of(context)
|
||||||
.extension<StackColors>()!
|
.extension<StackColors>()!
|
||||||
|
@ -961,7 +963,7 @@ class _WalletViewState extends ConsumerState<WalletView> {
|
||||||
await _copy(xpub);
|
await _copy(xpub);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
"Copy to clipboard",
|
"Copy",
|
||||||
style: STextStyles.button(context).copyWith(
|
style: STextStyles.button(context).copyWith(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.extension<StackColors>()!
|
.extension<StackColors>()!
|
||||||
|
|
134
lib/widgets/qr_dialog.dart
Normal file
134
lib/widgets/qr_dialog.dart
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:qr_flutter/qr_flutter.dart';
|
||||||
|
import 'package:stackwallet/utilities/text_styles.dart';
|
||||||
|
import 'package:stackwallet/utilities/theme/stack_colors.dart';
|
||||||
|
import 'package:stackwallet/utilities/util.dart';
|
||||||
|
|
||||||
|
class QrDialogBase extends StatelessWidget {
|
||||||
|
const QrDialogBase({
|
||||||
|
Key? key,
|
||||||
|
this.child,
|
||||||
|
this.padding = const EdgeInsets.all(24),
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final EdgeInsets padding;
|
||||||
|
final Widget? child;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment:
|
||||||
|
!Util.isDesktop ? MainAxisAlignment.end : MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Material(
|
||||||
|
borderRadius: BorderRadius.circular(
|
||||||
|
20,
|
||||||
|
),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).extension<StackColors>()!.popupBG,
|
||||||
|
borderRadius: BorderRadius.circular(
|
||||||
|
20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: padding,
|
||||||
|
child: child,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class QrDialog extends StatelessWidget {
|
||||||
|
const QrDialog({
|
||||||
|
Key? key,
|
||||||
|
this.leftButton,
|
||||||
|
this.rightButton,
|
||||||
|
this.icon,
|
||||||
|
required this.title,
|
||||||
|
this.message,
|
||||||
|
this.qr,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final Widget? leftButton;
|
||||||
|
final Widget? rightButton;
|
||||||
|
|
||||||
|
final Widget? icon;
|
||||||
|
|
||||||
|
final String title;
|
||||||
|
final String? message;
|
||||||
|
|
||||||
|
final String? qr;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return QrDialogBase(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
child: Text(
|
||||||
|
title,
|
||||||
|
style: STextStyles.pageTitleH2(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
icon != null ? icon! : Container(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
if (message != null)
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
if (message != null)
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
message!,
|
||||||
|
style: STextStyles.smallMed14(context),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
if (qr != null)
|
||||||
|
QrImage(
|
||||||
|
data: qr!,
|
||||||
|
size: 300,
|
||||||
|
foregroundColor:
|
||||||
|
Theme.of(context).extension<StackColors>()!.accentColorDark,
|
||||||
|
),
|
||||||
|
if (leftButton != null || rightButton != null)
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
if (leftButton != null || rightButton != null)
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
leftButton == null
|
||||||
|
? const Spacer()
|
||||||
|
: Expanded(child: leftButton!),
|
||||||
|
const SizedBox(
|
||||||
|
width: 8,
|
||||||
|
),
|
||||||
|
rightButton == null
|
||||||
|
? const Spacer()
|
||||||
|
: Expanded(child: rightButton!),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue