monorepo/lib/features/contacts/widgets/share_own_qr.dart

59 lines
1.7 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_contacts/contact.dart';
import 'package:qr_flutter/qr_flutter.dart';
class QRCodeButton extends StatelessWidget {
final List<Contact> contacts;
const QRCodeButton({Key? key, required this.contacts}) : super(key: key);
Contact? getSelfContact() {
if (kDebugMode) {
debugPrint("Checking for self contact");
}
for (var contact in contacts) {
if (contact.groups.isNotEmpty) {
debugPrint("Contact ${contact.displayName} is in groups: ${contact.groups.map((group) => group.name).join(", ")}");
}
if (contact.groups.any((group) => group.name.toLowerCase() == "user")) {
return contact;
}
}
return null;
}
@override
Widget build(BuildContext context) {
final selfContact = getSelfContact();
return IconButton(
icon: Icon(Icons.qr_code, color: selfContact != null ? Colors.blue : Colors.grey),
onPressed: selfContact != null
? () {
showDialog(
barrierColor: Colors.white24,
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return AlertDialog(
backgroundColor: Colors.black,
content: SizedBox(
width: 200,
height: 220,
child: QrImageView(
data: selfContact.toVCard(),
version: QrVersions.auto,
backgroundColor: Colors.white, // Ensure QR code is visible on black background
size: 200.0,
),
),
);
},
);
}
: null,
);
}
}