daxu0403 před 7 roky
rodič
revize
00cb9c8f6b

+ 1 - 0
.flutter-plugins

@@ -1,3 +1,4 @@
+barcode_scan=/Users/daxu/app/flutter/.pub-cache/hosted/pub.dartlang.org/barcode_scan-0.0.8/
 city_pickers=/Users/daxu/app/flutter/.pub-cache/hosted/pub.dartlang.org/city_pickers-0.0.4/
 flutter_picker=/Users/daxu/app/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_picker-1.0.8/
 shared_preferences=/Users/daxu/app/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.1+1/

+ 3 - 0
android/app/src/main/AndroidManifest.xml

@@ -21,6 +21,8 @@
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <!--精准定位权限,仅作用于6.0+-->
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <!-- 摄像头权限 -->
+    <uses-permission android:name="android.permission.CAMERA" />
     å
     <application
         android:name="io.flutter.app.FlutterApplication"
@@ -45,5 +47,6 @@
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
+        <activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>
     </application>
 </manifest>

+ 2 - 0
android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java

@@ -1,6 +1,7 @@
 package io.flutter.plugins;
 
 import io.flutter.plugin.common.PluginRegistry;
+import com.apptreesoftware.barcodescan.BarcodeScanPlugin;
 import com.example.citypickers.CityPickersPlugin;
 import com.yangyxd.flutterpicker.FlutterPickerPlugin;
 import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
@@ -14,6 +15,7 @@ public final class GeneratedPluginRegistrant {
     if (alreadyRegisteredWith(registry)) {
       return;
     }
+    BarcodeScanPlugin.registerWith(registry.registrarFor("com.apptreesoftware.barcodescan.BarcodeScanPlugin"));
     CityPickersPlugin.registerWith(registry.registrarFor("com.example.citypickers.CityPickersPlugin"));
     FlutterPickerPlugin.registerWith(registry.registrarFor("com.yangyxd.flutterpicker.FlutterPickerPlugin"));
     SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));

+ 2 - 0
android/build.gradle

@@ -1,4 +1,5 @@
 buildscript {
+    ext.kotlin_version = '1.2.51'
     repositories {
         google()
         jcenter()
@@ -6,6 +7,7 @@ buildscript {
 
     dependencies {
         classpath 'com.android.tools.build:gradle:3.2.1'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
 

+ 2 - 0
ios/Runner/GeneratedPluginRegistrant.m

@@ -3,6 +3,7 @@
 //
 
 #import "GeneratedPluginRegistrant.h"
+#import <barcode_scan/BarcodeScanPlugin.h>
 #import <city_pickers/CityPickersPlugin.h>
 #import <flutter_picker/FlutterPickerPlugin.h>
 #import <shared_preferences/SharedPreferencesPlugin.h>
@@ -11,6 +12,7 @@
 @implementation GeneratedPluginRegistrant
 
 + (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry {
+  [BarcodeScanPlugin registerWithRegistrar:[registry registrarForPlugin:@"BarcodeScanPlugin"]];
   [CityPickersPlugin registerWithRegistrar:[registry registrarForPlugin:@"CityPickersPlugin"]];
   [FlutterPickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterPickerPlugin"]];
   [FLTSharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTSharedPreferencesPlugin"]];

+ 36 - 2
lib/pages/order_management_page.dart

@@ -10,6 +10,8 @@ import '../showAlert.dart';
 import '../util/models.dart';
 import '../util/api.dart';
 import '../util/util.dart';
+import 'package:barcode_scan/barcode_scan.dart';
+import 'package:flutter/services.dart';
 class OrderManagementPage extends StatefulWidget {
   final Widget child;
 
@@ -79,7 +81,7 @@ class _QueryWidgetState extends State < QueryWidget > {
   List likeOrderNoList = [];
   var timer;
   bool loadMoreStatus = true;
-
+  String barcode = "";//扫描的订单号
 
   @override
   void initState() {
@@ -178,7 +180,9 @@ class _QueryWidgetState extends State < QueryWidget > {
                               width: ScreenUtil.getInstance().setWidth(38),
                               height: ScreenUtil.getInstance().setHeight(36),
                             ),
-                            onPressed: () {},
+                            onPressed: () {
+                              scan();
+                            },
                           ),
                           GestureDetector(
                             child: Container(
@@ -362,6 +366,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       ],
     );
   }
+  
   Widget _cardWiget(FromStatusGetOrderList obj, int index) {
     Map < int, String > statusMap = {
       1: '待取货',
@@ -443,6 +448,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       },
     );
   }
+  
   Widget _status1Fun(FromStatusGetOrderList obj, int index) {
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -520,6 +526,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       ],
     );
   }
+  
   Widget _status2Fun(FromStatusGetOrderList obj, int index) {
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -687,6 +694,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       ],
     );
   }
+  
   Widget _status3Fun(FromStatusGetOrderList obj, int index) {
     return Row(
       mainAxisAlignment: MainAxisAlignment.end,
@@ -776,6 +784,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       }
     });
   }
+  
   getMoreOrder(int orderStatus, int page) {
     if (!hasNextPage) {
       return;
@@ -808,6 +817,7 @@ class _QueryWidgetState extends State < QueryWidget > {
       }
     }
   }
+  
   myUpdataOrder(String myOrderNo, int myOrderStatus, int index) {
     updataOrderStatus(myOrderNo, myOrderStatus).then((resp) {
       if (isNotError(context, resp) && this.mounted) {
@@ -919,4 +929,28 @@ class _QueryWidgetState extends State < QueryWidget > {
         });
     
   }
+
+  Future scan() async {
+    try {
+      String barcode = await BarcodeScanner.scan();
+      print("bar:$barcode");
+      // setState(() {
+      //   return this.barcode = barcode;
+      // });
+    } on PlatformException catch (e) {
+      if (e.code == BarcodeScanner.CameraAccessDenied) {
+        setState(() {
+          return this.barcode = 'The user did not grant the camera permission!';
+        });
+      } else {
+        setState(() {
+          return this.barcode = 'Unknown error: $e';
+        });
+      }
+    } on FormatException{
+      setState(() => this.barcode = 'null (User returned using the "back"-button before scanning anything. Result)');
+    } catch (e) {
+      setState(() => this.barcode = 'Unknown error: $e');
+    }
+  }
 }

+ 7 - 0
pubspec.lock

@@ -8,6 +8,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.8"
+  barcode_scan:
+    dependency: "direct main"
+    description:
+      name: barcode_scan
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.0.8"
   boolean_selector:
     dependency: transitive
     description:

+ 2 - 0
pubspec.yaml

@@ -35,6 +35,8 @@ dependencies:
   intl: ^0.15.8
   #加密包
   crypto: ^2.0.6
+  #扫描条形码
+  barcode_scan: ^0.0.3
 
 dev_dependencies:
   flutter_test: