Flutter plugin for scanning and generating QR codes using the ZXing library, supporting Android, iOS, and desktop platforms
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.2 KiB

3 years ago
import 'dart:typed_data';
3 years ago
import 'package:flutter/material.dart';
import 'package:flutter_zxing/flutter_zxing.dart';
3 years ago
void main() {
3 years ago
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
FlutterZxing.setLogEnabled(true);
3 years ago
return const MaterialApp(
title: 'Flutter Zxing Example',
3 years ago
home: DemoPage(),
);
}
}
class DemoPage extends StatefulWidget {
const DemoPage({Key? key}) : super(key: key);
@override
State<DemoPage> createState() => _DemoPageState();
}
class _DemoPageState extends State<DemoPage> {
Uint8List? createdCodeBytes;
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
title: const Text('Flutter Zxing Example'),
bottom: const TabBar(
tabs: [
Tab(text: 'Scan Code'),
Tab(text: 'Create Code'),
],
),
),
3 years ago
body: TabBarView(
physics: const NeverScrollableScrollPhysics(),
children: [
ReaderWidget(
onScan: (value) {
showMessage(context, 'Scanned: ${value.textString ?? ''}');
},
),
ListView(
children: [
WriterWidget(
onSuccess: (result, bytes) {
setState(() {
createdCodeBytes = bytes;
});
},
onError: (error) {
showMessage(context, 'Error: $error');
},
),
if (createdCodeBytes != null)
Image.memory(createdCodeBytes ?? Uint8List(0), height: 200),
],
),
],
),
),
);
}
showMessage(BuildContext context, String message) {
debugPrint(message);
ScaffoldMessenger.of(context).hideCurrentSnackBar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(message),
),
3 years ago
);
}
}