Browse Source

单张静态图像实现

loki.wu 2 years ago
parent
commit
94952551c4

File diff suppressed because it is too large
+ 198 - 239
assets/single_image.json


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

@@ -0,0 +1,56 @@
+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';
+
+class RStaticImage extends StatefulWidget {
+  final StaticImage staticImage;
+
+  RStaticImage(this.staticImage);
+  @override
+  State<StatefulWidget> createState() {
+    return _RInputImageState();
+  }
+}
+
+class _RInputImageState extends State<RStaticImage> {
+  InputImageInfo? inputImageInfo;
+  _RInputImageState();
+
+  late Uint8List _bytes;
+
+  @override
+  initState() {
+    _bytes = convert.base64Decode(widget.staticImage.source!);
+    super.initState();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisAlignment: AlignmentConvert.horizontalToMainConvert(
+          widget.staticImage.horizontalAlignment),
+      children: [
+        Container(
+          height: PtToPxConverter.ptToPx(widget.staticImage.imageHeight!),
+          width: PtToPxConverter.ptToPx(widget.staticImage.imageWidth!),
+          alignment: Alignment.center,
+          margin: MarginConvert.marginConvert(widget.staticImage.margin),
+          child: Image.memory(_bytes),
+        ),
+      ],
+    );
+  }
+}

+ 6 - 0
lib/pages/paragraph_page.dart

@@ -8,6 +8,7 @@ import 'package:fis_lib_report/pages/components/multi_select.dart';
 import 'package:fis_lib_report/pages/components/multi_selected.dart';
 import 'package:fis_lib_report/pages/components/single_select.dart';
 import 'package:fis_lib_report/pages/components/static_Text.dart';
+import 'package:fis_lib_report/pages/components/static_image.dart';
 import 'package:fis_lib_report/pages/helpler.dart';
 import 'package:fis_lib_report/report/dateTimeElement.dart';
 import 'package:fis_lib_report/report/element_type.dart';
@@ -20,6 +21,7 @@ import 'package:fis_lib_report/report/multiSelected.dart';
 import 'package:fis_lib_report/report/paragraph.dart';
 import 'package:fis_lib_report/report/singleSelected.dart';
 import 'package:fis_lib_report/report/staticText.dart';
+import 'package:fis_lib_report/report/static_image.dart';
 import 'package:flutter/material.dart';
 
 class ParagraphPage extends StatefulWidget {
@@ -92,6 +94,10 @@ class _ParagraphState extends State<ParagraphPage> {
                 ElementType.inputImage!.name) {
               final inputImage = element as InputImage;
               return RInputImage(inputImage);
+            } else if (element.elementType!.name ==
+                ElementType.staticImage!.name) {
+              final staticImage = element as StaticImage;
+              return RStaticImage(staticImage);
             }
             return Container(
               height: 30,

+ 1 - 0
lib/report/element_type.dart

@@ -13,6 +13,7 @@ class ElementType {
   static ElementType? imageList = new ElementType('ImageList');
   static ElementType? dateTime = new ElementType('DateTime');
   static ElementType? inputImage = new ElementType('InputImage');
+  static ElementType? staticImage = new ElementType('StaticImage');
 
   ElementType(this.name);
 

+ 4 - 0
lib/report/paragraph.dart

@@ -9,6 +9,7 @@ import 'package:fis_lib_report/report/line.dart';
 import 'package:fis_lib_report/report/multiSelected.dart';
 import 'package:fis_lib_report/report/singleSelected.dart';
 import 'package:fis_lib_report/report/staticText.dart';
+import 'package:fis_lib_report/report/static_image.dart';
 
 class Paragraph extends Element implements IParagraph {
   @override
@@ -45,6 +46,9 @@ class Paragraph extends Element implements IParagraph {
       } else if (jsonType.name == ElementType.inputImage!.name) {
         final inputImage = InputImage.fromJson(map);
         elements!.add(inputImage);
+      } else if (jsonType.name == ElementType.staticImage!.name) {
+        final staticImage = StaticImage.fromJson(map);
+        elements!.add(staticImage);
       }
     });
   }

+ 41 - 0
lib/report/static_image.dart

@@ -0,0 +1,41 @@
+import 'package:fis_lib_report/report/element.dart';
+import 'package:fis_lib_report/report/interfaces/block_element.dart';
+import 'package:fis_lib_report/report/interfaces/element.dart';
+import 'package:fis_lib_report/report/interfaces/inputImageList.dart';
+
+class StaticImage extends Element
+    implements IBlockElement, IInputImageListElement {
+  @override
+  int? column;
+
+  @override
+  List<IElement>? elements;
+
+  @override
+  bool? hasGap;
+
+  @override
+  bool? hasImageBorder;
+
+  @override
+  bool? transparentBackground;
+
+  double? imageWidth;
+
+  double? imageHeight;
+
+  bool? isReadOnly;
+
+  String? source;
+
+  StaticImage.fromJson(Map<String, dynamic> json) : super.fromJson(json) {
+    column = json['Column'];
+    hasGap = json['HasGap'];
+    hasImageBorder = json['HasImageBorder'];
+    transparentBackground = json['TransparentBackground'];
+    imageWidth = json['Width'];
+    imageHeight = json['Height'];
+    isReadOnly = json['IsReadOnly'];
+    source = json['Source'];
+  }
+}

+ 5 - 0
lib/report_info/paragraph_info.dart

@@ -6,6 +6,7 @@ import 'package:fis_lib_report/report/multiSelected.dart';
 import 'package:fis_lib_report/report/paragraph.dart';
 import 'package:fis_lib_report/report/singleSelected.dart';
 import 'package:fis_lib_report/report/staticText.dart';
+import 'package:fis_lib_report/report/static_image.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';
@@ -13,6 +14,7 @@ import 'package:fis_lib_report/report_info/input_image_info.dart';
 import 'package:fis_lib_report/report_info/input_text_info.dart';
 import 'package:fis_lib_report/report_info/multi_selected_info.dart';
 import 'package:fis_lib_report/report_info/single_selected_info.dart';
+import 'package:fis_lib_report/report_info/static_image_info.dart';
 import 'package:fis_lib_report/report_info/static_text_info.dart';
 
 class ParagraphInfo extends ElementInfo implements IBlockElementInfo {
@@ -46,6 +48,9 @@ class ParagraphInfo extends ElementInfo implements IBlockElementInfo {
       } else if (element.elementType!.name == ElementType.inputImage!.name) {
         final inputImage = element as InputImage;
         elementInfos!.add(InputImageInfo.fromElement(inputImage));
+      } else if (element.elementType!.name == ElementType.staticImage!.name) {
+        final inputImage = element as StaticImage;
+        elementInfos!.add(StaticImageInfo.fromElement(inputImage));
       }
     }
   }

+ 33 - 0
lib/report_info/static_image_info.dart

@@ -0,0 +1,33 @@
+import 'package:fis_lib_report/converts/event_type.dart';
+import 'package:fis_lib_report/report/element.dart';
+import 'package:fis_lib_report/report/inputImage.dart';
+import 'package:fis_lib_report/report/inputImageList.dart';
+import 'package:fis_lib_report/report/interfaces/block_element.dart';
+import 'package:fis_lib_report/report/interfaces/element.dart';
+import 'package:fis_lib_report/report/interfaces/inputImageList.dart';
+import 'package:fis_lib_report/report/static_image.dart';
+import 'package:fis_lib_report/report_info/block_element_info_interface.dart';
+import 'package:fis_lib_report/report_info/element_info.dart';
+
+class StaticImageInfo extends ElementInfo implements IBlockElementInfo {
+  int? column;
+
+  bool? hasGap;
+
+  bool? isReadOnly;
+
+  bool? isSelected;
+
+  String? source;
+
+  StaticImageInfo.fromElement(StaticImage staticImage)
+      : super.fromElement(staticImage) {
+    column = staticImage.column;
+    hasGap = staticImage.hasGap;
+    isReadOnly = staticImage.isReadOnly;
+    source = staticImage.source;
+  }
+
+  @override
+  List<ElementInfo>? elementInfos;
+}

Some files were not shown because too many files changed in this diff