@@ -49,12 +49,12 @@ class Exporter {
4949 return bytesImages;
5050 }
5151
52- Future <List <int >?> exportGif () async {
52+ Future <List <int >?> exportGif ({ ValueChanged < double > ? percentProcess} ) async {
5353 final frames = await exportFrames ();
5454 if (frames == null ) {
5555 return null ;
5656 }
57- return compute (_exportGif, DataHolder (frames, _maxWidthFrame, _maxHeightFrame));
57+ return compute (_exportGif, DataHolder (frames, _maxWidthFrame, _maxHeightFrame,percentProcess ));
5858 }
5959
6060 static Future <List <int >?> _exportGif (DataHolder data) async {
@@ -63,8 +63,12 @@ class Exporter {
6363 int height = data.height;
6464
6565 image.Image mainImage = image.Image .empty ();
66-
66+ int i = 1 ;
67+ int max = frames.length;
6768 for (final frame in frames) {
69+ double percent = double .parse ((i / max).toStringAsFixed (4 ));
70+ data.percentProcess? .call (percent);
71+ i+= 1 ;
6872 final iAsBytes = frame.image.buffer.asUint8List ();
6973 final decodedImage = image.decodePng (iAsBytes);
7074
@@ -116,6 +120,7 @@ class Exporter {
116120 // a transparency threshold.
117121 final numFrames = srcImage.frames.length;
118122 for (var frameIndex = 0 ; frameIndex < numFrames; frameIndex++ ) {
123+
119124 final srcFrame = srcImage.frames[frameIndex];
120125 final newFrame = newImage.frames[frameIndex];
121126
@@ -143,7 +148,8 @@ class RawFrame {
143148}
144149
145150class DataHolder {
146- DataHolder (this .frames, this .width, this .height);
151+ DataHolder (this .frames, this .width, this .height, this .percentProcess);
152+ ValueChanged <double >? percentProcess;
147153
148154 List <RawFrame > frames;
149155
0 commit comments