Эх сурвалжийг харах

优化身份证读卡逻辑

gavin.chen 1 жил өмнө
parent
commit
4889777b14

+ 16 - 13
lib/pages/patient/card_reader/controller.dart

@@ -1,30 +1,33 @@
 import 'dart:math';
-
 import 'package:get/get.dart';
+import 'package:vitalapp/architecture/utils/prompt_box.dart';
 
 class CardReaderController extends GetxController {
   CardReaderController();
 
+  bool isCardReaderConnected = false; // 是否连接读卡器
+
   _initData() {
-    /// TODO 判断是否连接读卡器
     isCardReaderConnected = Random().nextBool(); // FIXME 模拟随机连接读卡器
     update(["card_reader"]);
   }
 
-  void onTap() {}
-
-  bool isCardReaderConnected = false;
-
-  void debugConnectCardReader() {
-    // set status to connected
-    isCardReaderConnected = true;
-    update(["card_reader"]);
+  void checkReader() {
+    isCardReaderConnected = Random().nextBool(); // FIXME 模拟检查读卡器连接状态
+    if (isCardReaderConnected) {
+      update(["card_reader"]);
+    } else {
+      PromptBox.toast("未检测到读卡器,请检查连接后重试");
+    }
   }
 
-  void debugGetValueAndClose() {
+  /// 读取到数据的回调
+  /// TODO addListener 监听读卡器读到数据
+  void onReadInfo(String mockData) {
+    final result =
+        CardReaderResult(success: true, code: mockData, message: mockData);
     Get.back(
-      result: CardReaderResult(
-          success: true, code: "123456789012345678", message: "success"),
+      result: result,
     );
   }
 

+ 1 - 1
lib/pages/patient/card_reader/index.dart

@@ -2,4 +2,4 @@ library card_reader;
 
 export './controller.dart';
 export './view.dart';
-export 'widgets/index.dart';
+export './widgets/index.dart';

+ 0 - 1
lib/pages/patient/card_reader/view.dart

@@ -1,4 +1,3 @@
-import 'package:date_format/date_format.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 

+ 28 - 31
lib/pages/patient/card_reader/widgets/card_reader_view.dart

@@ -1,43 +1,40 @@
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
-import 'package:vitalapp/components/button.dart';
 import '../index.dart';
 
 class CardReaderView extends GetView<CardReaderController> {
   const CardReaderView({super.key});
   @override
   Widget build(BuildContext context) {
-    return Container(
-      child: Column(
-        mainAxisAlignment: MainAxisAlignment.center,
-        children: [
-          const Image(
-            image: AssetImage('assets/images/card_reader.png'),
-            width: 100,
+    return Column(
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        const Image(
+          image: AssetImage('assets/images/card_reader.png'),
+          width: 100,
+        ),
+        const SizedBox(height: 20),
+        const Text(
+          '已连接读卡器',
+          style: TextStyle(
+            fontSize: 20,
+            fontWeight: FontWeight.bold,
           ),
-          const SizedBox(height: 20),
-          const Text(
-            '已连接读卡器',
-            style: TextStyle(
-              fontSize: 20,
-              fontWeight: FontWeight.bold,
-            ),
-          ),
-          const SizedBox(height: 20),
-          const Text(
-            '请将身份证放置在读卡器上',
-            textAlign: TextAlign.center,
-          ),
-          const SizedBox(height: 20),
-          ElevatedButton(
-            onPressed: () {
-              // FIXME 模拟读取到数据
-              controller.debugGetValueAndClose();
-            },
-            child: const Text('取消'),
-          ),
-        ],
-      ),
+        ),
+        const SizedBox(height: 20),
+        const Text(
+          '请将身份证放置在读卡器上',
+          textAlign: TextAlign.center,
+        ),
+        const SizedBox(height: 20),
+        ElevatedButton(
+          onPressed: () {
+            // FIXME 模拟读取到数据
+            controller.onReadInfo("mockData");
+          },
+          child: const Text('取消'),
+        ),
+      ],
     );
   }
 }

+ 28 - 31
lib/pages/patient/card_reader/widgets/no_card_reader_view.dart

@@ -1,4 +1,3 @@
-import 'package:date_format/date_format.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import '../index.dart';
@@ -7,37 +6,35 @@ class NoCardReaderView extends GetView<CardReaderController> {
   const NoCardReaderView({super.key});
   @override
   Widget build(BuildContext context) {
-    return Container(
-      child: Column(
-        mainAxisAlignment: MainAxisAlignment.center,
-        children: [
-          const Icon(
-            Icons.warning_amber_rounded,
-            size: 80,
-            color: Colors.red,
+    return Column(
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        const Icon(
+          Icons.warning_amber_rounded,
+          size: 80,
+          color: Colors.red,
+        ),
+        const SizedBox(height: 20),
+        const Text(
+          '未连接读卡器',
+          style: TextStyle(
+            fontSize: 20,
+            fontWeight: FontWeight.bold,
           ),
-          const SizedBox(height: 20),
-          const Text(
-            '未连接读卡器',
-            style: TextStyle(
-              fontSize: 20,
-              fontWeight: FontWeight.bold,
-            ),
-          ),
-          const SizedBox(height: 20),
-          const Text(
-            '请连接读卡器后重试',
-            textAlign: TextAlign.center,
-          ),
-          const SizedBox(height: 20),
-          ElevatedButton(
-            onPressed: () {
-              controller.debugConnectCardReader();
-            },
-            child: const Text('重试'),
-          ),
-        ],
-      ),
+        ),
+        const SizedBox(height: 20),
+        const Text(
+          '请连接读卡器后重试',
+          textAlign: TextAlign.center,
+        ),
+        const SizedBox(height: 20),
+        ElevatedButton(
+          onPressed: () {
+            controller.checkReader();
+          },
+          child: const Text('重试'),
+        ),
+      ],
     );
   }
 }