|
|
@@ -47,12 +47,16 @@ class _QRViewExampleState extends State<QRViewExample> { |
|
|
QRViewController controller; |
|
|
QRViewController controller; |
|
|
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); |
|
|
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); |
|
|
|
|
|
|
|
|
/// Overriding reassemble and pausing the camera |
|
|
|
|
|
/// ensures us that hot reload won't give a black screen |
|
|
|
|
|
|
|
|
// In order to get hot reload to work we need to pause the camera if the platform |
|
|
|
|
|
// is android, or resume the camera if the platform is iOS. |
|
|
@override |
|
|
@override |
|
|
void reassemble() { |
|
|
void reassemble() { |
|
|
super.reassemble(); |
|
|
super.reassemble(); |
|
|
controller.pauseCamera(); |
|
|
|
|
|
|
|
|
if (Platform.isAndroid) { |
|
|
|
|
|
controller.pauseCamera(); |
|
|
|
|
|
} else if (Platform.isIOS) { |
|
|
|
|
|
controller.resumeCamera(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@override |
|
|
@override |
|
|
@@ -69,7 +73,8 @@ class _QRViewExampleState extends State<QRViewExample> { |
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly, |
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly, |
|
|
children: <Widget>[ |
|
|
children: <Widget>[ |
|
|
if (result != null) |
|
|
if (result != null) |
|
|
Text('Barcode Type: ${describeEnum(result.format)} Data: ${result.code}') |
|
|
|
|
|
|
|
|
Text( |
|
|
|
|
|
'Barcode Type: ${describeEnum(result.format)} Data: ${result.code}') |
|
|
else |
|
|
else |
|
|
Text('Scan a code'), |
|
|
Text('Scan a code'), |
|
|
Row( |
|
|
Row( |
|
|
@@ -162,11 +167,17 @@ class _QRViewExampleState extends State<QRViewExample> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Widget _buildQrView(BuildContext context) { |
|
|
Widget _buildQrView(BuildContext context) { |
|
|
|
|
|
// For this example we check how width or tall the device is and change the scanArea and overlay accordingly. |
|
|
|
|
|
var scanArea = (MediaQuery.of(context).size.width < 400 || |
|
|
|
|
|
MediaQuery.of(context).size.height < 400) |
|
|
|
|
|
? 150.0 |
|
|
|
|
|
: 300.0; |
|
|
// To ensure the Scanner view is properly sizes after rotation |
|
|
// To ensure the Scanner view is properly sizes after rotation |
|
|
// we need to listen for Flutter SizeChanged notification and update controller |
|
|
// we need to listen for Flutter SizeChanged notification and update controller |
|
|
return NotificationListener<SizeChangedLayoutNotification>( |
|
|
return NotificationListener<SizeChangedLayoutNotification>( |
|
|
onNotification: (notification) { |
|
|
onNotification: (notification) { |
|
|
Future.microtask(() => controller?.updateDimensions(qrKey)); |
|
|
|
|
|
|
|
|
Future.microtask( |
|
|
|
|
|
() => controller?.updateDimensions(qrKey, scanArea: scanArea)); |
|
|
return false; |
|
|
return false; |
|
|
}, |
|
|
}, |
|
|
child: SizeChangedLayoutNotifier( |
|
|
child: SizeChangedLayoutNotifier( |
|
|
@@ -179,7 +190,7 @@ class _QRViewExampleState extends State<QRViewExample> { |
|
|
borderRadius: 10, |
|
|
borderRadius: 10, |
|
|
borderLength: 30, |
|
|
borderLength: 30, |
|
|
borderWidth: 10, |
|
|
borderWidth: 10, |
|
|
cutOutSize: 300, |
|
|
|
|
|
|
|
|
cutOutSize: scanArea, |
|
|
), |
|
|
), |
|
|
))); |
|
|
))); |
|
|
} |
|
|
} |
|
|
@@ -201,6 +212,7 @@ class _QRViewExampleState extends State<QRViewExample> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|