memspace / zefyr

Soft and gentle rich text editing for Flutter applications.
https://zefyr-editor.gitbook.io
2.22k stars 551 forks source link

Issue with Custom Image Delegate - Image from memory #330

Open VenkataPakalapati opened 4 years ago

VenkataPakalapati commented 4 years ago

Custom Image Delegate keeps calling buildImage method.

here is my custom delegate code

class CustomImageDelegate extends ZefyrImageDelegate<ImageSource> {
  @override
  Widget buildImage(BuildContext context, String imageSource) {
    **print("building image");**
    var decodedbase64 = base64Decode(imageSource);
    return Image.memory(decodedbase64);
  }

  @override
  Future<String> pickImage(ImageSource source) async {
    final file = await ImagePicker.pickImage(source: source);
    if (file == null) return null;
    return base64Encode(file.readAsBytesSync());
  }

  @override
  ImageSource get cameraSource => ImageSource.camera;

  @override
  ImageSource get gallerySource => ImageSource.gallery;
}

image

link to video -- https://drive.google.com/file/d/1dqbrl1nt9Ra6qpDtrAKioaNvqU9CD0O_/view?usp=sharing

console:

image

cgestes commented 4 years ago

everytime the cursor blink?

If that's the case, I guess you need to find a way to avoid the call to 'buildImage' to be expensive.

VenkataPakalapati commented 4 years ago

yes but it only happens if i try to return an image from memory. basically this is what i was trying to do

If i switch to using FileImage, there is no issue

krishnakumarcn commented 4 years ago

Hey @VenkataPakalapati , Any solution to this?

doducvuong14061990 commented 3 years ago

Have you fixed the error yet? please help me.

doducvuong14061990 commented 3 years ago

Custom Image Delegate keeps calling buildImage method.

here is my custom delegate code

class CustomImageDelegate extends ZefyrImageDelegate<ImageSource> {
  @override
  Widget buildImage(BuildContext context, String imageSource) {
    **print("building image");**
    var decodedbase64 = base64Decode(imageSource);
    return Image.memory(decodedbase64);
  }

  @override
  Future<String> pickImage(ImageSource source) async {
    final file = await ImagePicker.pickImage(source: source);
    if (file == null) return null;
    return base64Encode(file.readAsBytesSync());
  }

  @override
  ImageSource get cameraSource => ImageSource.camera;

  @override
  ImageSource get gallerySource => ImageSource.gallery;
}

image

link to video -- https://drive.google.com/file/d/1dqbrl1nt9Ra6qpDtrAKioaNvqU9CD0O_/view?usp=sharing

console:

image

Have you fixed the error yet? please help me.