Browse Source

update scan qrcode library

smf_upgrate
Đại Võ 2 years ago
parent
commit
b4894f2f44
6 changed files with 130 additions and 3 deletions
  1. +1
    -1
      android/build.gradle
  2. +2
    -1
      lib/main.dart
  3. +79
    -0
      lib/presentation/screens/qr_scan/qr_scan_page.dart
  4. +40
    -0
      lib/presentation/screens/tabbar/tabbar.dart
  5. +7
    -0
      pubspec.lock
  6. +1
    -1
      pubspec.yaml

+ 1
- 1
android/build.gradle View File

@@ -1,5 +1,5 @@
buildscript {
ext.kotlin_version = '1.3.61'
ext.kotlin_version = '1.5.10'
repositories {
google()
jcenter()

+ 2
- 1
lib/main.dart View File

@@ -69,7 +69,8 @@ Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
// }
// }

_showAlertCheckCropCode(BuildContext context, String cropCode, Repository repository) async {
_showAlertCheckCropCode(String cropCode) async {
var repository = Repository();
Get.defaultDialog(title: "Kiểm tra thông tin lô ....", middleText: "", content: CircularProgressIndicator());
try {
await repository.getPlotDetailByCode(cropCode, page: 1, size: 1).then((value) {

+ 79
- 0
lib/presentation/screens/qr_scan/qr_scan_page.dart View File

@@ -0,0 +1,79 @@
import 'dart:io';

import 'package:farm_tpf/presentation/custom_widgets/app_bar_widget.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';

class QrCodeScannerScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => _QrCodeScannerScreenState();
}

class _QrCodeScannerScreenState extends State<QrCodeScannerScreen> {
// Barcode? result;
QRViewController controller;
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');

// 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
void reassemble() {
super.reassemble();
if (Platform.isAndroid) {
controller.pauseCamera();
}
controller.resumeCamera();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
isBack: true,
),
body: Column(
children: <Widget>[
Expanded(flex: 4, child: _buildQrView(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
// we need to listen for Flutter SizeChanged notification and update controller
return QRView(
key: qrKey,
onQRViewCreated: _onQRViewCreated,
overlay: QrScannerOverlayShape(borderColor: Colors.red, borderRadius: 10, borderLength: 30, borderWidth: 10, cutOutSize: scanArea),
);
}

void _onQRViewCreated(QRViewController controller) {
setState(() {
this.controller = controller;
});
controller.scannedDataStream.listen((scanData) {
if (scanData != null) {
Get.back(result: scanData);
}
});
}

void _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) {
if (!p) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('no Permission')),
);
}
}

@override
void dispose() {
controller?.dispose();
super.dispose();
}
}

+ 40
- 0
lib/presentation/screens/tabbar/tabbar.dart View File

@@ -3,13 +3,16 @@ import 'dart:io';
import 'package:badges/badges.dart';
import 'package:dio/dio.dart';
import 'package:farm_tpf/custom_model/NotificationObjectDTO.dart';
import 'package:farm_tpf/data/repository/repository.dart';
import 'package:farm_tpf/data/repository/user_repository.dart';
import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart';
import 'package:farm_tpf/presentation/screens/account/sc_account.dart';
import 'package:farm_tpf/presentation/screens/control_device/sc_control_device.dart';
import 'package:farm_tpf/presentation/screens/notification/sc_notification.dart';
import 'package:farm_tpf/presentation/screens/notification/update_count_noti_bloc.dart';
import 'package:farm_tpf/presentation/screens/plot/sc_plot.dart';
import 'package:farm_tpf/presentation/screens/plot_detail/sc_plot_detail.dart';
import 'package:farm_tpf/presentation/screens/qr_scan/qr_scan_page.dart';
import 'package:farm_tpf/utils/NotificationsBloc.dart';
import 'package:farm_tpf/utils/const_color.dart';
import 'package:farm_tpf/utils/const_common.dart';
@@ -276,6 +279,11 @@ class _TabbarScreenState extends State<TabbarScreen> {
if (index == 2) {
changeTabbar.changeIndex(changeTabbar.index);
// scan(context);
Get.to(QrCodeScannerScreen()).then((value) {
if (value != null) {
_showAlertCheckCropCode(value);
}
});
} else {
changeTabbar.changeIndex(itemsTabbar[index].index);
}
@@ -286,6 +294,38 @@ class _TabbarScreenState extends State<TabbarScreen> {
})),
)));
}

_showAlertCheckCropCode(String cropCode) async {
var repository = Repository();
Get.defaultDialog(title: "Kiểm tra thông tin lô ....", middleText: "", content: CircularProgressIndicator());
try {
await repository.getPlotDetailByCode(cropCode, page: 1, size: 1).then((value) {
print("ok");
if (Get.isDialogOpen) Get.back();
Get.to(PlotDetailScreen(cropId: value.tbCropDTO.id, cropType: value.tbCropDTO.tbCropTypeId, initialIndex: 0));
}).catchError((onError) {
Utils.showDialog(
title: "Không tìm thấy lô",
message: "Thử lại với mã tem khác?",
textConfirm: "Thử lại",
textCancel: "Huỷ",
onConfirm: () {
Get.back();
// scan(context);
});
});
} catch (e) {
Utils.showDialog(
title: "Không tìm thấy lô",
message: "Thử lại với mã tem khác?",
textConfirm: "Thử lại",
textCancel: "Huỷ",
onConfirm: () {
Get.back();
// scan(context);
});
}
}
}

class TabbarSelected extends GetxController {

+ 7
- 0
pubspec.lock View File

@@ -667,6 +667,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.7"
qr_code_scanner:
dependency: "direct main"
description:
name: qr_code_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.14"
quiver:
dependency: transitive
description:

+ 1
- 1
pubspec.yaml View File

@@ -54,7 +54,7 @@ dependencies:
flutter_svg: ^0.20.0-nullsafety.3
google_fonts: ^1.1.1
ffi: ^1.0.0
# qr_code_scanner: ^1.0.1
qr_code_scanner: ^0.0.7

dev_dependencies:

Loading…
Cancel
Save