我正在尝试添加showOpenFilePicker
添加到窗口对象。
@JS()
library js_t;
import 'dart:html';
import 'package:js/js.dart';
@JS("window")
abstract class _Window2 {
external dynamic showOpenFilePicker();
}
extension WindowExt on Window {
Future showOpenFilePicker() {
Object t = this;
final _Window2 tt = t;
return promiseToFuture(tt.showOpenFilePicker());
}
}
final r = await window.showOpenFilePicker();
我收到以下错误
errors.dart:187未捕获错误:应为“JSObject<>”类型的值,但在Object.throw处获得的是“Window”类型的值_在Object.castError (errors.dart:84)在Object.cast在dart.LegacyType.new.as(types.dart:445)Object.WindowExt$124showOpenFilePicker在main$ (main.dart:12)
发布于 2021-02-22 17:39:52
这个很适合我
extension WindowExt on Window {
@JS("window.showOpenFilePicker")
external dynamic _showOpenFilePicker();
Future showOpenFilePicker() {
return promiseToFuture(_showOpenFilePicker());
}
}
编辑:
而是从文档中
/// An annotation that indicates a library, class, or member is implemented
/// directly in JavaScript.
///
/// All external members of a class or library with this annotation implicitly
/// have it as well.
///
/// Specifying [name] customizes the JavaScript name to use. By default the
/// dart name is used. It is not valid to specify a custom [name] for class
/// instance members.
class JS {
final String? name;
const JS([this.name]);
}
指定自定义项无效名称用于类/实例成员。
:s
Edit2:js_utils to the rescure
extension WindowExt on Window {
Future showOpenFilePicker() {
final Object t = this;
return promiseToFuture(callMethod(t, "showOpenFilePicker", []));
}
}
https://stackoverflow.com/questions/66312871
复制相似问题