Переглянути джерело

修复再次打开报告时报告医师和报告时间不显示
&使用公用vid代码用于图像展示

loki.wu 2 роки тому
батько
коміт
64e50be360

+ 11 - 0
.vscode/settings.json

@@ -0,0 +1,11 @@
+{
+    "dart.flutterSdkPaths": [
+        "\"D:\\\\src\\\\flutter\\\\flutter_windows_2.10.5-stable\\\\flutter\\\\bin\""
+    ],
+    "dart.flutterSdkPath": "D:\\src\\flutter\\flutter_windows_2.10.5-stable\\flutter\\bin",
+    "dart.sdkPath": "C:\\tools\\dart-sdk\\bin",
+    "dart.checkForSdkUpdates": true,
+    "dart.sdkPaths": [
+        "C:\\\\tools\\\\dart-sdk\\\\bin"
+    ]
+}

+ 24 - 0
lib/converts/date_to_string_converter.dart

@@ -59,4 +59,28 @@ class DateToStringConverter {
 
     return targetString;
   }
+
+  static String dateTimeConvert(String format, int timestamp) {
+    String dateTime = '';
+    if (format == 'yyyy-MM-dd') {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": "-", "m-d": "-"});
+    } else if (format == 'yyyy年M月d日 HH:mm') {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": "年", "m-d": "月", "d-h": "日", "h-m": ":"});
+    } else if (format == 'yyyy-MM-dd HH:mm') {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": "-", "m-d": "-", "h-m": ":"});
+    } else if (format == "yyyy年M月d日") {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": "年", "m-d": "月", "d-h": "日"});
+    } else if (format == 'yyyy.MM.dd') {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": ".", "m-d": "."});
+    } else if (format == 'yyyy/MM/dd') {
+      dateTime = DateToStringConverter.dateAndTimeToString(
+          timestamp, {"y-m": "/", "m-d": "/"});
+    }
+    return dateTime;
+  }
 }

+ 3 - 3
lib/main.dart

@@ -2,11 +2,11 @@ import 'dart:convert';
 
 import 'package:fis_lib_report/converts/event_type.dart';
 import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
-import 'package:fis_lib_report/pages/components/vid_image.dart';
 import 'package:fis_lib_report/report_edit.dart';
 import 'package:fis_lib_report/report_info/element_tag_names.dart';
 import 'package:fis_lib_report/report_info/input_text_info.dart';
 import 'package:fis_lib_report/report_info/report_info.dart';
+import 'package:fis_ui/business/vid_img_view/index.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 
@@ -126,8 +126,8 @@ class _MyHomePageState extends State<MyHomePage> {
                       },
                       child: Container(
                         margin: const EdgeInsets.all(15),
-                        child: VidImageView.network(
-                          element,
+                        child: VidImageView(
+                          url: element,
                           width: 150,
                           height: 100,
                         ),

+ 21 - 37
lib/pages/components/datetime.dart

@@ -4,14 +4,12 @@ import 'package:fis_lib_report/converts/text_size_converter.dart';
 import 'package:fis_lib_report/converts/alignment_convert.dart';
 import 'package:fis_lib_report/report/dateTimeElement.dart';
 import 'package:fis_lib_report/report_info/date_time_info.dart';
-import 'package:fis_lib_report/report_info/element_tag_names.dart';
 import 'package:fis_lib_report/report_info/report_info.dart';
-import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 
 class RDateTime extends StatefulWidget {
   final DateTimeElement dateTimeElement;
-  RDateTime(this.dateTimeElement);
+  const RDateTime(this.dateTimeElement);
   @override
   State<StatefulWidget> createState() {
     return _RDateTimeState();
@@ -23,7 +21,7 @@ class _RDateTimeState extends State<RDateTime> {
 
   _RDateTimeState();
 
-  String _dateTime = '';
+  String _dateTimeStr = '';
   double _fontSize = 15.0;
   double _width = 0;
   TextStyle _style = const TextStyle();
@@ -62,7 +60,7 @@ class _RDateTimeState extends State<RDateTime> {
               alignment: AlignmentConvert.verticalLayoutConvert(
                   dateTimeElement.verticalAlignment!),
               child: Text(
-                _dateTime,
+                _dateTimeStr,
                 style: _style,
                 textAlign: AlignmentConvert.horizontalAlignmentConvert(
                     dateTimeElement.horizontalAlignment),
@@ -103,23 +101,26 @@ class _RDateTimeState extends State<RDateTime> {
     final format = dateTimeElement.dateTimeFormat;
     final dateTimeInfo =
         ReportInfo.instance.getElementInfo(dateTimeElement) as DateTimeInfo?;
-
-    if (format != null &&
-        dateTimeElement.tag!.name == TagNames.REPORTTIME &&
-        dateTimeInfo!.text.isEmpty) {
-      _dateTimeConvert(
-          format, ReportInfo.instance.reportDate!.millisecondsSinceEpoch);
-    }
     if (dateTimeInfo != null && dateTimeInfo != _dateTimeInfo) {
+      if (_dateTimeInfo != null) {
+        _dateTimeInfo!.onTextChange.dispose();
+      }
       _dateTimeInfo = dateTimeInfo;
       _dateTimeInfo!.onTextChange.addListener((sender, e) {
-        setState(() {
-          final date = DateTime.parse(_dateTimeInfo!.text);
-          _dateTimeConvert(format!, date.millisecondsSinceEpoch);
-        });
+        if (mounted) {
+          setState(() {
+            final date = DateTime.parse(_dateTimeInfo!.text.trim());
+            _dateTimeConvert(format!, date.millisecondsSinceEpoch);
+          });
+        }
       });
     }
-
+    final date = DateTime.parse(_dateTimeInfo!.text.trim());
+    final dateStr = DateToStringConverter.dateTimeConvert(
+        format!, date.millisecondsSinceEpoch);
+    if (dateStr != _dateTimeStr) {
+      _dateTimeStr = dateStr;
+    }
     _fontSize = dateTimeElement.fontSize ?? 15.0;
     //TODO(Loki):常规模板暂未设置fontStyles,后续再支持
     final fontStyles = dateTimeElement.fontStyles;
@@ -148,28 +149,11 @@ class _RDateTimeState extends State<RDateTime> {
     );
 
     _width = PtToPxConverter.ptToPx(
-        TextSizeConvert.getTextSize(_dateTime, _style).width);
+        TextSizeConvert.getTextSize(_dateTimeStr, _style).width);
   }
 
   void _dateTimeConvert(String format, int timestamp) {
-    if (format == 'yyyy-MM-dd') {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": "-", "m-d": "-"});
-    } else if (format == 'yyyy年M月d日 HH:mm') {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": "年", "m-d": "月", "d-h": "日", "h-m": ":"});
-    } else if (format == 'yyyy-MM-dd HH:mm') {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": "-", "m-d": "-", "h-m": ":"});
-    } else if (format == "yyyy年M月d日") {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": "年", "m-d": "月", "d-h": "日"});
-    } else if (format == 'yyyy.MM.dd') {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": ".", "m-d": "."});
-    } else if (format == 'yyyy/MM/dd') {
-      _dateTime = DateToStringConverter.dateAndTimeToString(
-          timestamp, {"y-m": "/", "m-d": "/"});
-    }
+    _dateTimeStr =
+        DateToStringConverter.dateTimeConvert(format, timestamp).trim();
   }
 }

+ 3 - 3
lib/pages/components/input_image.dart

@@ -1,13 +1,13 @@
 import 'package:fis_lib_report/converts/alignment_convert.dart';
 import 'package:fis_lib_report/converts/margin_convert.dart';
 import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
-import 'package:fis_lib_report/pages/components/vid_image.dart';
 import 'package:fis_lib_report/pages/helpler.dart';
 import 'package:fis_lib_report/report/inputImage.dart';
 import 'package:fis_lib_report/report/inputImageList.dart';
 import 'package:fis_lib_report/report_info/input_image_info.dart';
 import 'package:fis_lib_report/report_info/input_image_list_info.dart';
 import 'package:fis_lib_report/report_info/report_info.dart';
+import 'package:fis_ui/business/vid_img_view/index.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 
@@ -117,8 +117,8 @@ class _RInputImageState extends State<RInputImage> {
 
   Widget _getChild() {
     if (_imageUrl.isNotEmpty) {
-      return VidImageView.network(
-        _imageUrl,
+      return VidImageView(
+        url: _imageUrl,
         fit: BoxFit.fill,
         height: PtToPxConverter.ptToPx(widget.inputImage.imageHeight!),
         width: PtToPxConverter.ptToPx(widget.inputImage.imageWidth!),

+ 10 - 10
lib/pages/components/input_imageList.dart

@@ -1,17 +1,15 @@
 import 'package:fis_lib_report/converts/margin_convert.dart';
 import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
-import 'package:fis_lib_report/pages/components/vid_image.dart';
-import 'package:fis_lib_report/pages/helpler.dart';
 import 'package:fis_lib_report/report/inputImageList.dart';
 import 'package:fis_lib_report/report_info/input_image_list_info.dart';
 import 'package:fis_lib_report/report_info/report_info.dart';
-import 'package:flutter/cupertino.dart';
+import 'package:fis_ui/business/vid_img_view/index.dart';
 import 'package:flutter/material.dart';
 
 class RInputImageList extends StatefulWidget {
   final InputImageList inputImageList;
 
-  RInputImageList(this.inputImageList);
+  const RInputImageList(this.inputImageList);
   @override
   State<StatefulWidget> createState() {
     return _RInputImageListState();
@@ -104,8 +102,8 @@ class _RInputImageListState extends State<RInputImageList> {
         ),
         itemCount: _images.length,
         itemBuilder: (BuildContext context, int index) {
-          return VidImageView.network(
-            _images[index],
+          return VidImageView(
+            url: _images[index],
             fit: BoxFit.fill,
             width: PtToPxConverter.ptToPx(inputImageList!.imageWidth!) - 20,
           );
@@ -121,10 +119,12 @@ class _RInputImageListState extends State<RInputImageList> {
   void _addSelectImageListening() {
     try {
       _inputImageListInfo!.onSelectedChange.addListener((sender, e) {
-        setState(() {
-          _images = e;
-          _child = _getChild();
-        });
+        if (mounted) {
+          setState(() {
+            _images = e;
+            _child = _getChild();
+          });
+        }
       });
     } catch (e) {
       print(e);

+ 10 - 13
lib/pages/components/input_text.dart

@@ -239,22 +239,19 @@ class _RInputTextState extends State<RInputText> {
   }
 
   void _checkInputTextInfo() {
-    final inputTextInfo = ReportInfo.instance.getElementInfo(widget.inputText);
-    if (_inputTextInfo != inputTextInfo) {
-      if (_inputTextInfo != null) _inputTextInfo!.onTextChange.dispose();
-      _inputTextInfo = inputTextInfo as InputTextInfo;
-    }
-    if (!_inputTextInfo!.isListening!) {
-      _initDatas();
-      _inputTextInfo!.isListening = true;
-    }
     try {
+      final inputTextInfo =
+          ReportInfo.instance.getElementInfo(widget.inputText);
+      if (_inputTextInfo != inputTextInfo) {
+        if (_inputTextInfo != null) _inputTextInfo!.onTextChange.dispose();
+        _inputTextInfo = inputTextInfo as InputTextInfo;
+      }
+      if (!_inputTextInfo!.isListening!) {
+        _initDatas();
+        _inputTextInfo!.isListening = true;
+      }
       if (_inputTextInfo!.text != _controller.text) {
         _controller.text = _inputTextInfo!.text;
-        if (_inputTextInfo!.isReadOnly! &&
-            _inputTextInfo!.tag!.name == 'ReportPhysician') {
-          _controller.text = ReportInfo.instance.reporter ?? '';
-        }
       }
     } catch (e) {
       print(e);

+ 2 - 8
lib/pages/components/page_number.dart

@@ -1,18 +1,12 @@
 import 'package:fis_lib_report/converts/margin_convert.dart';
-import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
-import 'package:fis_lib_report/pages/helpler.dart';
-import 'package:fis_lib_report/report/line.dart';
 import 'package:fis_lib_report/report/page_number.dart';
-import 'package:fis_lib_report/report/rt_thickness.dart';
-import 'package:fis_lib_report/report/space.dart';
-import 'package:fis_lib_report/report_info/report_info.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 
 class RPageNumber extends StatefulWidget {
   final PageNumber space;
 
-  RPageNumber(this.space, {Key? key}) : super(key: key);
+  const RPageNumber(this.space, {Key? key}) : super(key: key);
 
   @override
   State<StatefulWidget> createState() {
@@ -22,7 +16,7 @@ class RPageNumber extends StatefulWidget {
 
 class _RRPageNumberState extends State<RPageNumber> {
   late PageNumber pageNumber;
-  String _text = '';
+  final String _text = '';
   @override
   initState() {
     pageNumber = widget.space;

+ 0 - 1
lib/pages/components/single_select.dart

@@ -4,7 +4,6 @@ import 'package:fis_lib_report/report_info/report_info.dart';
 import 'package:fis_lib_report/report_info/single_selected_info.dart';
 import 'package:flutter/material.dart';
 import 'package:dropdown_button2/dropdown_button2.dart';
-import 'package:fis_ui/simple/select.dart';
 
 class RSingleSelected extends StatefulWidget {
   SingleSelected singleSelected;

+ 0 - 8
lib/pages/components/static_image.dart

@@ -1,17 +1,9 @@
-import 'dart:typed_data';
 import 'dart:convert' as convert;
 
 import 'package:fis_lib_report/converts/alignment_convert.dart';
 import 'package:fis_lib_report/converts/margin_convert.dart';
 import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
-import 'package:fis_lib_report/pages/components/vid_image.dart';
-import 'package:fis_lib_report/pages/helpler.dart';
-import 'package:fis_lib_report/report/inputImage.dart';
-import 'package:fis_lib_report/report/inputImageList.dart';
 import 'package:fis_lib_report/report/static_image.dart';
-import 'package:fis_lib_report/report_info/input_image_info.dart';
-import 'package:fis_lib_report/report_info/input_image_list_info.dart';
-import 'package:fis_lib_report/report_info/report_info.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 

+ 0 - 68
lib/pages/components/vid.dart

@@ -1,68 +0,0 @@
-import 'dart:io';
-import 'dart:typed_data';
-
-import 'package:dio/dio.dart' as dio;
-import 'package:vid/us/vid_us_image.dart';
-import 'package:vid/us/vid_us_image_data.dart';
-
-/// Vid文件帮助工具
-class VidFileHelper {
-  /// 从文件获取单帧图像
-  ///
-  /// [file] vid单帧图像文件对象
-  static Future<VidUsImage?> getImageFromFile(File file) async {
-    final data = await getDataFromFile(file);
-    if (data != null) {
-      final frame = data.getImage(0);
-      return frame;
-    }
-    return null;
-  }
-
-  /// 从文件中获取Vid信息
-  ///
-  /// [file] vid文件对象
-  static Future<VidUsImageData?> getDataFromFile(File file) async {
-    try {
-      final fileData = await file.readAsBytes();
-      final vidData = VidUsImageData(fileData);
-      return vidData;
-    } catch (e) {
-      // logger.e
-      return null;
-    }
-  }
-
-  /// 从链接获取单帧图像
-  ///
-  /// [url] vid单帧图像链接
-  static Future<VidUsImage?> getImageFromNetwork(String url) async {
-    final data = await getDataFromNetwork(url);
-    if (data != null) {
-      final frame = data.getImage(0);
-      return frame;
-    }
-    return null;
-  }
-
-  /// 从链接获取Vid信息
-  ///
-  /// [url] vid文件链接
-  static Future<VidUsImageData?> getDataFromNetwork(String url) async {
-    try {
-      final httpClient = dio.Dio(dio.BaseOptions(
-        responseType: dio.ResponseType.bytes,
-        sendTimeout: 10 * 1000,
-      ));
-
-      final response = await httpClient.get(url);
-      httpClient.close();
-      final bytes = response.data as Uint8List;
-      final vidData = VidUsImageData(bytes);
-      return vidData;
-    } catch (e) {
-      // logger
-      return null;
-    }
-  }
-}

+ 0 - 151
lib/pages/components/vid_image.dart

@@ -1,151 +0,0 @@
-import 'dart:io';
-
-import 'package:fis_lib_report/pages/components/vid.dart';
-import 'package:flutter/material.dart';
-import 'package:vid/us/vid_us_image.dart';
-
-class VidImageView {
-  /// 创建一个从网络链接加载Vid图片的组件
-  ///
-  /// [url] vid图片链接
-  ///
-  /// 其他参数参考[Image]组件
-  static Widget network(
-    String url, {
-    Key? key,
-    double? width,
-    double? height,
-    Widget Function(BuildContext context)? loadingBuilder,
-    ImageErrorWidgetBuilder? errorBuilder,
-    Animation<double>? opacity,
-    FilterQuality filterQuality = FilterQuality.low,
-    BlendMode? colorBlendMode,
-    BoxFit? fit,
-    Alignment alignment = Alignment.center,
-    bool isAntiAlias = false,
-    bool gaplessPlayback = false,
-    double scale = 1.0,
-  }) {
-    return FutureBuilder(
-      future: VidFileHelper.getImageFromNetwork(url),
-      builder: (context, snapshot) => _buildAsyncVidWidget(
-        context,
-        snapshot,
-        loadingBuilder,
-        errorBuilder,
-        width: width,
-        height: height,
-        opacity: opacity,
-        filterQuality: filterQuality,
-        colorBlendMode: colorBlendMode,
-        fit: fit,
-        alignment: alignment,
-        isAntiAlias: isAntiAlias,
-        gaplessPlayback: gaplessPlayback,
-        scale: scale,
-      ),
-    );
-  }
-
-  /// 创建一个从文件加载Vid图片的组件
-  ///
-  /// [file] 文件对象
-  ///
-  /// 其他参数参考[Image]组件
-  static Widget file(
-    File file, {
-    Key? key,
-    double? width,
-    double? height,
-    Widget Function(BuildContext context)? loadingBuilder,
-    ImageErrorWidgetBuilder? errorBuilder,
-    Animation<double>? opacity,
-    FilterQuality filterQuality = FilterQuality.low,
-    BlendMode? colorBlendMode,
-    BoxFit? fit,
-    Alignment alignment = Alignment.center,
-    bool isAntiAlias = false,
-    bool gaplessPlayback = false,
-    double scale = 1.0,
-  }) {
-    return FutureBuilder(
-      future: VidFileHelper.getImageFromFile(file),
-      builder: (context, snapshot) => _buildAsyncVidWidget(
-        context,
-        snapshot,
-        loadingBuilder,
-        errorBuilder,
-        width: width,
-        height: height,
-        opacity: opacity,
-        filterQuality: filterQuality,
-        colorBlendMode: colorBlendMode,
-        fit: fit,
-        alignment: alignment,
-        isAntiAlias: isAntiAlias,
-        gaplessPlayback: gaplessPlayback,
-        scale: scale,
-      ),
-    );
-  }
-
-  static Widget _buildAsyncVidWidget(
-    BuildContext context,
-    AsyncSnapshot<Object?> snapshot,
-    Widget Function(BuildContext context)? loadingBuilder,
-    ImageErrorWidgetBuilder? errorBuilder, {
-    double? width,
-    double? height,
-    Animation<double>? opacity,
-    FilterQuality filterQuality = FilterQuality.low,
-    BlendMode? colorBlendMode,
-    BoxFit? fit,
-    Alignment alignment = Alignment.center,
-    bool isAntiAlias = false,
-    bool gaplessPlayback = false,
-    double scale = 1.0,
-  }) {
-    if (snapshot.connectionState == ConnectionState.done) {
-      if (snapshot.hasData) {
-        final frame = snapshot.data as VidUsImage;
-        return Image.memory(
-          frame.imageData,
-          width: width,
-          height: height,
-          opacity: opacity,
-          filterQuality: filterQuality,
-          colorBlendMode: colorBlendMode,
-          fit: fit,
-          alignment: alignment,
-          isAntiAlias: isAntiAlias,
-          gaplessPlayback: gaplessPlayback,
-          scale: scale,
-        );
-      } else {
-        final exWidget = errorBuilder != null
-            ? errorBuilder(
-                context,
-                Exception("Vid Image load fail."),
-                snapshot.stackTrace,
-              )
-            : ErrorWidget("Error");
-        return Container(
-          alignment: alignment,
-          width: width,
-          height: height,
-          child: exWidget,
-        );
-      }
-    } else {
-      final loading = loadingBuilder != null
-          ? loadingBuilder(context)
-          : const CircularProgressIndicator();
-      return Container(
-        alignment: alignment,
-        width: width,
-        height: height,
-        child: loading,
-      );
-    }
-  }
-}

+ 0 - 3
lib/report_info/element_info.dart

@@ -1,11 +1,8 @@
 import 'package:fis_lib_report/report/element_tag.dart';
 import 'package:fis_lib_report/report/element_type.dart';
 import 'package:fis_lib_report/report/interfaces/element.dart';
-import 'package:fis_lib_report/report/interfaces/position_layout.dart';
 import 'package:fis_lib_report/report/interfaces/report_element.dart';
 import 'package:fis_lib_report/report/measure_tag.dart';
-import 'package:fis_lib_report/report/rt_thickness.dart';
-import 'package:uuid/uuid.dart';
 
 abstract class ElementInfo {
   @override

+ 3 - 0
lib/report_info/element_tag_names.dart

@@ -25,4 +25,7 @@ class TagNames {
 
   ///医院名称
   static const String HOSPITALNAME = "HospitalName";
+
+  /// 报告日期
+  static const String REPORT_DATE = "ReportTime";
 }

+ 11 - 0
lib/report_info/report_base_info.dart

@@ -8,6 +8,7 @@ import 'package:fis_lib_report/report/report_template_document.dart';
 import 'package:fis_lib_report/report/rt_page_size.dart';
 import 'package:fis_lib_report/report/rt_table.dart';
 import 'package:fis_lib_report/report_info/block_element_info_interface.dart';
+import 'package:fis_lib_report/report_info/date_time_info.dart';
 import 'package:fis_lib_report/report_info/element_info.dart';
 import 'package:fis_lib_report/report_info/element_tag_names.dart';
 import 'package:fis_lib_report/report_info/input_image_list_info.dart';
@@ -108,6 +109,16 @@ class ReportBaseInfo {
         footers.add(_initBlockElement(element));
       }
       pageSize = reportTemplate.pageSize;
+      final reporterInputInfo = getElementInfoByTagName(TagNames.RPHYSICIAN);
+      if (reporterInputInfo != null && reporter.isNotEmpty) {
+        final inputInfo = reporterInputInfo as InputTextInfo;
+        inputInfo.text = reporter;
+      }
+      final dateInputInfo = getElementInfoByTagName(TagNames.REPORT_DATE);
+      if (dateInputInfo != null) {
+        final dateInfo = dateInputInfo as DateTimeInfo;
+        dateInfo.text = reportDate.toString();
+      }
       final nameInputInfo = getElementInfoByTagName(TagNames.PATIENT_NAME_TAG);
       if (patientName != null &&
           patientName.isNotEmpty &&

+ 84 - 12
pubspec.lock

@@ -8,6 +8,20 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.3.0"
+  args:
+    dependency: transitive
+    description:
+      name: args
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.1"
+  asn1lib:
+    dependency: transitive
+    description:
+      name: asn1lib
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.1.0"
   async:
     dependency: transitive
     description:
@@ -50,6 +64,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.15.0"
+  convert:
+    dependency: transitive
+    description:
+      name: convert
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.2"
   crypto:
     dependency: transitive
     description:
@@ -85,6 +106,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.2"
+  encrypt:
+    dependency: transitive
+    description:
+      name: encrypt
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.0.1"
   fake_async:
     dependency: transitive
     description:
@@ -107,20 +135,20 @@ packages:
     source: hosted
     version: "6.1.2"
   fis_common:
-    dependency: transitive
+    dependency: "direct overridden"
     description:
       path: "."
-      ref: "^1.0.0"
-      resolved-ref: "5414cdaf5f6747dec9a093e3b2579965efb2e83a"
+      ref: "7c1b96ac79"
+      resolved-ref: "7c1b96ac79d3976b9c32bfe6e72ccfb3eb352bd6"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_common.git"
     source: git
     version: "0.0.2"
   fis_jsonrpc:
-    dependency: transitive
+    dependency: "direct overridden"
     description:
       path: "."
-      ref: "^1.0.0"
-      resolved-ref: eaf6fe995b5499a05c7b192f1f37632a965ec54f
+      ref: "7707b7926d"
+      resolved-ref: "7707b7926d404e31548a025be7271305acaf5740"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
     source: git
     version: "0.0.1"
@@ -134,14 +162,23 @@ packages:
     source: git
     version: "0.0.1"
   fis_ui:
-    dependency: "direct overridden"
+    dependency: "direct main"
     description:
       path: "."
-      ref: f574c3bfee
-      resolved-ref: f574c3bfee3a5f6190dfa0ea5a50316fde8e1190
+      ref: d8e4248aa2
+      resolved-ref: d8e4248aa239580b2fae1ba4f054418098755551
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_ui.git"
     source: git
     version: "0.0.1"
+  fis_vid:
+    dependency: transitive
+    description:
+      path: "."
+      ref: "^1.0.0"
+      resolved-ref: "8c850f426e2c9e9d5f83990e7a941702b7a88f8f"
+      url: "http://git.ius.plus:88/melon.yin/fis_lib_vid.git"
+    source: git
+    version: "0.0.1"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -206,6 +243,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.0.1"
+  image:
+    dependency: transitive
+    description:
+      name: image
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.3"
   intl:
     dependency: transitive
     description:
@@ -304,6 +348,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.7"
+  petitparser:
+    dependency: transitive
+    description:
+      name: petitparser
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.4.0"
   platform:
     dependency: transitive
     description:
@@ -318,6 +369,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.2"
+  pointycastle:
+    dependency: transitive
+    description:
+      name: pointycastle
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.6.0"
   process:
     dependency: transitive
     description:
@@ -404,11 +462,18 @@ packages:
     dependency: "direct overridden"
     description:
       path: "."
-      ref: "173b68819c"
-      resolved-ref: "173b68819c6681244a08a32a74b1091baefe4b29"
+      ref: "54343a18f3"
+      resolved-ref: "54343a18f30abb5b32d3f9f3bd9fe44ade5cabe8"
       url: "http://git.ius.plus:88/Project-Wing/flutter_vid"
     source: git
     version: "0.0.1"
+  web_socket_channel:
+    dependency: transitive
+    description:
+      name: web_socket_channel
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
   win32:
     dependency: transitive
     description:
@@ -423,6 +488,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.2.0+1"
+  xml:
+    dependency: transitive
+    description:
+      name: xml
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.3.1"
 sdks:
-  dart: ">=2.16.1 <3.0.0"
+  dart: ">=2.16.2 <3.0.0"
   flutter: ">=2.8.1"

+ 15 - 3
pubspec.yaml

@@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 version: 1.0.0+1
 
 environment:
-  sdk: ">=2.16.1 <3.0.0"
+  sdk: ">=2.16.2 <3.0.0"
 
 # Dependencies specify other packages that your package needs in order to work.
 # To automatically upgrade your package dependencies to the latest versions
@@ -36,8 +36,16 @@ dependencies:
   # The following adds the Cupertino Icons font to your application.
   # Use with the CupertinoIcons class for iOS style icons.
   cupertino_icons: ^1.0.2
+  fis_ui:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_ui.git
+      ref: d8e4248aa2
 
 dependency_overrides:
+  fis_common:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_common.git
+      ref: 7c1b96ac79
   fis_theme:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_theme.git
@@ -45,11 +53,15 @@ dependency_overrides:
   fis_ui:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_ui.git
-      ref: f574c3bfee
+      ref: d8e4248aa2
+  fis_jsonrpc:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
+      ref: 7707b7926d
   vid:
     git:
       url: http://git.ius.plus:88/Project-Wing/flutter_vid
-      ref: 173b68819c
+      ref: 54343a18f3
 
 
 dev_dependencies: