Skip to content
Snippets Groups Projects
Commit a597e9ac authored by vjrj's avatar vjrj
Browse files

Import wallet with QR #98

parent 2a4032da
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,8 @@ import 'package:clipboard/clipboard.dart'; ...@@ -2,6 +2,8 @@ import 'package:clipboard/clipboard.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../generic_qr_button.dart';
class ImportClipboardDialog extends StatefulWidget { class ImportClipboardDialog extends StatefulWidget {
const ImportClipboardDialog({super.key, required this.onImport}); const ImportClipboardDialog({super.key, required this.onImport});
...@@ -45,13 +47,23 @@ class _ImportClipboardDialogState extends State<ImportClipboardDialog> { ...@@ -45,13 +47,23 @@ class _ImportClipboardDialogState extends State<ImportClipboardDialog> {
], ],
), ),
actions: <Widget>[ actions: <Widget>[
TextButton( Row(
child: Text(tr('import')), mainAxisAlignment: MainAxisAlignment.spaceBetween,
onPressed: () { children: <Widget>[
Navigator.of(context).pop(_textController.text); GenericQrButton(
widget.onImport(_textController.text); onKeyScanned: (String key) {
}, Navigator.of(context).pop(key);
), widget.onImport(key);
},
),
TextButton(
child: Text(tr('import')),
onPressed: () {
Navigator.of(context).pop(_textController.text);
widget.onImport(_textController.text);
},
),
])
], ],
); );
} }
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/models/payment_cubit.dart';
import '../../../data/models/payment_state.dart';
import '../../pay_helper.dart'; import '../../pay_helper.dart';
import '../../qr_manager.dart'; import '../generic_qr_button.dart';
class PayQrButton extends StatefulWidget { class PayQrButton extends StatelessWidget {
const PayQrButton({super.key}); const PayQrButton({super.key});
@override
State<PayQrButton> createState() => _PayQrButtonState();
}
class _PayQrButtonState extends State<PayQrButton> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocBuilder<PaymentCubit, PaymentState>( return GenericQrButton(
builder: (BuildContext context, PaymentState state) { onKeyScanned: (String key) => onKeyScanned(context, key));
if (state.contact == null || state.contact!.pubKey.isEmpty) {
return ElevatedButton.icon(
onPressed: () async {
final String? scannedKey = await QrManager.qrScan(context);
if (scannedKey is String &&
scannedKey != null &&
scannedKey != '-1') {
if (!mounted) {
return;
}
await onKeyScanned(context, scannedKey);
}
},
icon: const Row(children: <Widget>[
SizedBox(width: 5),
Icon(Icons.qr_code_scanner)
]),
label: const Text(''),
style: ElevatedButton.styleFrom(
minimumSize: const Size(30.0, 60.0),
foregroundColor: Colors.white,
backgroundColor: Theme.of(context).colorScheme.primary,
padding:
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6.0),
),
),
);
} else {
return Container();
}
});
} }
} }
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/models/payment_cubit.dart';
import '../../../data/models/payment_state.dart';
import '../qr_manager.dart';
class GenericQrButton extends StatelessWidget {
const GenericQrButton({super.key, required this.onKeyScanned});
final Function(String) onKeyScanned;
@override
Widget build(BuildContext context) {
return BlocBuilder<PaymentCubit, PaymentState>(
builder: (BuildContext context, PaymentState state) {
if (state.contact == null || state.contact!.pubKey.isEmpty) {
return ElevatedButton.icon(
onPressed: () async {
final String? scannedKey = await QrManager.qrScan(context);
if (scannedKey is String &&
scannedKey != null &&
scannedKey != '-1') {
/* if (!mounted) {
return;
}*/
await onKeyScanned(scannedKey);
}
},
icon: const Row(children: <Widget>[
SizedBox(width: 5),
Icon(Icons.qr_code_scanner)
]),
label: const Text(''),
style: ElevatedButton.styleFrom(
minimumSize: const Size(30.0, 60.0),
foregroundColor: Colors.white,
backgroundColor: Theme.of(context).colorScheme.primary,
padding:
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6.0),
),
),
);
} else {
return Container();
}
});
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment