Browse Source

修复切换模板后无法选中图片

loki.wu 2 years ago
parent
commit
edc8f90d02

+ 28 - 0
lib/pages/components/input_imageList.dart

@@ -36,6 +36,30 @@ class _RInputImageListState extends State<RInputImageList> {
 
   @override
   Widget build(BuildContext context) {
+    if (inputImageListInfo != null) {
+      final imageInfo = ReportInfo.instance
+          .getBlockElement(widget.inputImageList) as InputImageListInfo;
+      if (imageInfo != inputImageListInfo) {
+        inputImageListInfo = imageInfo;
+        setState(() {
+          _images.clear();
+          _isSelected = false;
+          _child = _getChild();
+        });
+        inputImageListInfo!.onSelect!.addListener((sender, e) {
+          setState(() {
+            if (_images.contains(e)) {
+              _images.remove(e);
+              inputImageListInfo!.selectedImages.remove(e);
+            } else {
+              _images.add(e);
+              inputImageListInfo!.selectedImages.add(e);
+            }
+            _child = _getChild();
+          });
+        });
+      }
+    }
     return SizedBox(
       width: PtToPxConverter.ptToPx(
           inputImageList!.imageWidth! * inputImageList!.column!),
@@ -102,6 +126,8 @@ class _RInputImageListState extends State<RInputImageList> {
           );
         },
       );
+    } else {
+      _height = PtToPxConverter.ptToPx(inputImageList!.imageHeight!) + 9;
     }
 
     return const Text('请点击此处后选择图片');
@@ -123,8 +149,10 @@ class _RInputImageListState extends State<RInputImageList> {
         setState(() {
           if (_images.contains(e)) {
             _images.remove(e);
+            inputImageListInfo!.selectedImages.add(e);
           } else {
             _images.add(e);
+            inputImageListInfo!.selectedImages.remove(e);
           }
           _child = _getChild();
         });

+ 2 - 2
lib/report_info/input_image_list_info.dart

@@ -16,6 +16,8 @@ class InputImageListInfo extends ElementInfo implements IBlockElementInfo {
 
   bool? isSelected;
 
+  List<String> selectedImages = [];
+
   FEventHandler<String>? onSelect = FEventHandler();
 
   InputImageListInfo.fromElement(InputImageList inputImageList)
@@ -23,8 +25,6 @@ class InputImageListInfo extends ElementInfo implements IBlockElementInfo {
     column = inputImageList.column;
     hasGap = inputImageList.hasGap;
     isReadOnly = inputImageList.isReadOnly;
-    onSelect!.dispose();
-    onSelect = FEventHandler();
   }
 
   @override