@@ -429,6 +429,20 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
429
429
final ImagePicker _picker = ImagePicker ();
430
430
bool _isLoading = false ;
431
431
String ? _internalError;
432
+ ImageProvider ? _imageProvider;
433
+
434
+ @override
435
+ void initState ()
436
+ {
437
+ img.Image ? image = widget.currentSavedValue ?? widget.definition.initialValue;
438
+
439
+ if (image != null )
440
+ {
441
+ _imageProvider = image.toImageProvider ();
442
+ }
443
+
444
+ super .initState ();
445
+ }
432
446
433
447
@override
434
448
Widget build (BuildContext context)
@@ -518,9 +532,7 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
518
532
519
533
Widget _buildPreview (BuildContext context, FormFieldState <img.Image ?> state)
520
534
{
521
- img.Image ? image = state.value;
522
-
523
- if (image == null )
535
+ if (_imageProvider == null )
524
536
{
525
537
return Container (
526
538
margin: context.paddingL,
@@ -556,7 +568,7 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
556
568
margin: context.paddingL,
557
569
child: ArchImage (
558
570
edgePreset: kImageEdgePreset.outerShadowM,
559
- image: image. toImageProvider () ,
571
+ image: _imageProvider ! ,
560
572
),
561
573
),
562
574
Padding (
@@ -632,6 +644,7 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
632
644
{
633
645
state.didChange (image);
634
646
widget.definition.onChange? .call ([image! ]);
647
+ _imageProvider = image! .toImageProvider ();
635
648
});
636
649
}
637
650
finally
@@ -662,6 +675,9 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
662
675
throw Exception ('Image height is smaller than min height' );
663
676
}
664
677
678
+
679
+ // TODO: use the following for image processing (other is a way too slow): https://pub.dev/packages/flutter_image_compress
680
+
665
681
return image.convertImage (
666
682
type: widget.definition.fileSettings.conversion,
667
683
quality: widget.definition.fileSettings.conversionQuality,
@@ -685,6 +701,7 @@ class _FormInputImagesWidgetSingleState extends State<_FormInputImagesWidgetSing
685
701
_internalError = null ;
686
702
state.didChange (null );
687
703
widget.definition.onChange? .call ([]);
704
+ _imageProvider = null ;
688
705
});
689
706
}
690
707
0 commit comments