Merge branch 'spike/block2-derisking'
This commit is contained in:
commit
2ed7b1e89e
3 changed files with 61 additions and 1 deletions
|
|
@ -5,6 +5,7 @@ import '../i18n/strings.g.dart';
|
|||
import '../services/profile_store.dart';
|
||||
import '../services/social_service.dart';
|
||||
import '../services/social_settings.dart';
|
||||
import 'qr_view.dart';
|
||||
import 'theme.dart';
|
||||
|
||||
/// Your own profile: the shareable identity (npub) plus a display name and short
|
||||
|
|
@ -164,7 +165,9 @@ class _IdentityCard extends StatelessWidget {
|
|||
t.profile.idHelp,
|
||||
style: const TextStyle(color: seedMuted, fontSize: 12),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
const SizedBox(height: 14),
|
||||
Center(child: QrView(data: npub, size: 200)),
|
||||
const SizedBox(height: 12),
|
||||
SelectableText(
|
||||
npub,
|
||||
style: const TextStyle(
|
||||
|
|
|
|||
54
apps/app_seeds/lib/ui/qr_view.dart
Normal file
54
apps/app_seeds/lib/ui/qr_view.dart
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import 'package:barcode/barcode.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Renders [data] as a QR code, painted from the pure-Dart `barcode` matrix (no
|
||||
/// native plugin). Used for the profile's shareable identity — hand your npub to
|
||||
/// someone at a fair with a scan.
|
||||
class QrView extends StatelessWidget {
|
||||
const QrView({required this.data, this.size = 200, super.key});
|
||||
|
||||
final String data;
|
||||
final double size;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
width: size,
|
||||
height: size,
|
||||
color: Colors.white,
|
||||
padding: const EdgeInsets.all(8),
|
||||
child: CustomPaint(
|
||||
size: Size.square(size),
|
||||
painter: _QrPainter(data),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _QrPainter extends CustomPainter {
|
||||
_QrPainter(this.data);
|
||||
|
||||
final String data;
|
||||
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
final black = Paint()..color = Colors.black;
|
||||
for (final element in Barcode.qrCode()
|
||||
.make(data, width: size.width, height: size.height)) {
|
||||
if (element is BarcodeBar && element.black) {
|
||||
canvas.drawRect(
|
||||
Rect.fromLTWH(
|
||||
element.left,
|
||||
element.top,
|
||||
element.width,
|
||||
element.height,
|
||||
),
|
||||
black,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRepaint(_QrPainter oldDelegate) => oldDelegate.data != data;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue