Используйте дартс обратный вызов для JS

Я обернул библиотеку exif-js через dart:js,

  @JS()
    library exif;

    import 'package:js/js.dart';

    @JS()
    external PhotoDetails get EXIF;

    @JS()
    class PhotoDetails {
      factory PhotoDetails() {
        return EXIF;
      }

      @JS()
      external bool getData(img, callback);
}

И есть небольшая программа Dart:

PhotoDetails photoDetails = new PhotoDetails();
    var fileUploadInputElement = new FileUploadInputElement();
    fileUploadInputElement.onChange.listen((e) => photoDetails.getData(
        fileUploadInputElement.files[0], () {
      print(this);
    }));

Здесь уже был дан ответ, но когда я сделал это, у меня есть эта ошибка js: exif.js:351 Uncaught TypeError: callback.call is not a functionЯ пытался вручную привести к функции. Но это не помогло. С лямбда-выражением было то же самое.

1 ответ

Решение

Я думаю тебе нужно allowInterop или же allowInteropCaptureThis

PhotoDetails photoDetails = new PhotoDetails();
var fileUploadInputElement = new FileUploadInputElement();
fileUploadInputElement.onChange.listen((e) => photoDetails.getData(
    fileUploadInputElement.files[0], allowInteropCaptureThis((self, [_]) {
  print(self);
})));
Другие вопросы по тегам