Используйте дартс обратный вызов для 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);
})));