lykhonis / image_crop

A flutter plugin to crop image on iOS and Android.
Apache License 2.0
328 stars 202 forks source link

Image is not displayed when reselecting previously cropped image #85

Open sonlam103 opened 2 years ago

sonlam103 commented 2 years ago

Hi, I use your lib for crop image, but I encountering an error, which image is not displayed when reselecting previously cropped image. I pass an image file to image crop screen, then I crop it, after I reselect it (origin image) from the gallery, then it do not display on screen. Step:

  1. Select an image from the gallery.
  2. Cover to file, pass it to crop screen.
  3. Crop it, and back to before screen.
  4. Select previously an image from the gallery.
  5. Cover to file, pass it to crop screen ==> image do not display (I attach file).

Screenshot_20211122-114427.

And this is my code for crop image screen (I modified from your example) https://drive.google.com/file/d/16i3bn5xUELg23mw3UOCOqdN88JHaHOb8/view?usp=sharing

Anyone helps, thanks!

guilhermedaldim commented 2 years ago

Same issue here!

mori-heidari commented 2 years ago

I have same issue

Niko-by commented 2 years ago

Same issue here!

Niko-by commented 2 years ago

I think the problem is in the file_picker plugin. I tried to get the file via image_picker and the problem went away.

XFile file = await ImagePicker().pickImage(source: ImageSource.gallery);

l-7-l commented 2 years ago

Try image.evict()

mariusbloemhof commented 2 years ago

Same issue here!

fn-19 commented 1 year ago

Try image.evict()

I have same issue, I use photo_manager library

with this code, sloved problem

in crop file, in didChangeDependencies() and didUpdateWidget() add this line.

thanks

l-7-l commented 1 year ago

Try image.evict()

I have same issue, I use photo_manager library

with this code, sloved problem

in crop file, in didChangeDependencies() and didUpdateWidget() add this line.

thanks

Interestingly, if you call widget.image.obtainCacheStatus(configuration: configuration),it can also be solved

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();

    // widget.image.evict();
    _getImage(force: true); /// Or other way to point out from didChangeDependencies
  }

  void _getImage({bool force = false}) async {
    final oldImageStream = _imageStream;
    final configuration = createLocalImageConfiguration(context);

    final newImageStream = widget.image.resolve(configuration);

    _imageStream = newImageStream;
    if (force) {
      final status = await widget.image.obtainCacheStatus(configuration: configuration);
      print(status);
    }

   /// other codes ......