我正在flutter中生成不同领域的二维码。现在我需要点击按钮生成 QR 图像。为此,我尝试使用 blue_ Thermal_printer: ^1.1.5 但遇到了一些困难。
下面附加的代码是生成 QR 图像的文件的代码。现在,通过单击此页面上的按钮,我需要生成一个 QR 图像以在屏幕上显示。预先感谢。
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:share_plus/share_plus.dart';
import '../../../routes.dart';
class GenerateClipboard extends StatelessWidget {
String dataa;
GenerateClipboard({ this.dataa});
@override
Widget build(BuildContext context) {
// TODO: implement build
return Material(
child: Scaffold(
body: Container(
height: MediaQuery.of(context).size.height,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/bg_all.png"),
fit: BoxFit.fill,
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.only(top: 20, left: 20 ),
child: Stack(
children: [
Align(
alignment: Alignment.centerLeft,
child: InkWell(
child: const Icon(Icons.arrow_back_ios),
onTap: () {
Navigator.pushReplacementNamed(
context, MyRoutes.clipboard);
},
),
),
const Align(
alignment: Alignment.center,
child: Text("Generate Code",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20)),
)
],
),
),
Padding(
padding: const EdgeInsets.only(top: 20),
child: QrImage(
data: "$dataa",
version: QrVersions.auto,
size: 250,
),
),
Padding(
padding: const EdgeInsets.all(60),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Image.asset("assets/images/wifi/print.png", height: 100, width: 100),
InkWell(
onTap: () {
Share.share("https://play.google.com/store/apps/details?id=com.instructivetech.testapp");
},
child: Image.asset("assets/images/wifi/export.png", height: 100, width: 100)),
]
),
)
],
),
),
),
);
}
}
Screenshot(
controller: screenshotController,
child: QrImageView(
data:
' https://top108.web.app/ \n \nSociety of Humanity Education and Research',
version: QrVersions.auto,
size: 250.0,
backgroundColor: Colors.white,
semanticsLabel: 'QR CODE',
),
),
Column(
children: [
IconButton(
onPressed: () {
// share qr to others
},
icon: const Icon(Icons.share)),
IconButton(
onPressed: () async {
try {
ui.Image? image = await screenshotController
.captureAsUiImage();
if (image != null) {
ByteData? byteData = await image.toByteData(
format: ui.ImageByteFormat.png);
Uint8List pngBytes =
byteData!.buffer.asUint8List();
await ImageGallerySaver.saveImage(pngBytes,
name: 'Library QR');
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('QR Code saved to gallery'),
),
);
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('try again'),
),
);
}
},
icon: const Icon(Icons.save),
),
],
)
],
)
根据我的研究,有很好的选择:
flutter_barcode_scanner :- https://pub.dev/packages/flutter_barcode_scanner(阅读器)
barcode_scan :- https://pub.dev/packages/barcode_scanner(阅读器)
qr_flutter :- https://pub.dev/packages/qr_flutter(用于创建二维码)
希望对你有帮助。