2016-06-29 3 views
1

dart:js을 통해 exif-js 라이브러리를 래핑했습니다.포장 된 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); 
} 

그리고 약간의 다트 프로그램이 : 난 그렇게했을 때 이미 대답했다

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

Here을하지만, 나는이 오류를 JS 있습니다 exif.js:351 Uncaught TypeError: callback.call is not a function 내가 작동하려면 수동으로 캐스팅했습니다. 그러나 그것은 도움이되지 못했습니다. 람다 표현으로는 동일했습니다. '전화'기능 : 일치하지 않는 인수 폐쇄 전화 :

답변

1

난 당신이 내가 당신의 대답은 이유입니다, 잘 모르겠지만, 지금은`catch되지 않은 처리되지 않은 예외가 발생 allowInterop 또는

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

allowInteropCaptureThis 필요하다고 생각 NoSuchMethodError : 'call'메서드에 전달 된 인수의 수가 올바르지 않음 수신자 : Closure :() => dynamic 시도한 호출 : 호출 (FileImpl의 인스턴스) 발견 : call() # 0 Object._noSuchMethod (dart : core-patch/object_patch.dart : 42) # 1 Object.noSuchMethod (다트 : core-patch/object_patch.dart : 45)' –

+0

답변을 업데이트했습니다 ('[_, __]'을 (를) 추가했습니다). 이것이 어떤 효과 (다른 오류, ...)가 있다면 시도해 주시겠습니까? –

+0

이것은 충돌이 아니지만 동정 인쇄용으로는 ""입니다. 이제 나는 더 깊이 가서 내 실수를 찾아야합니다. 고마워. –