首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何向dart js外观添加扩展

如何向dart js外观添加扩展
EN

Stack Overflow用户
提问于 2021-02-22 17:17:13
回答 1查看 43关注 0票数 0

我正在尝试添加showOpenFilePicker添加到窗口对象。

代码语言:javascript
复制
@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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-22 17:39:52

这个很适合我

代码语言:javascript
复制
extension WindowExt on Window {
  @JS("window.showOpenFilePicker")
  external dynamic _showOpenFilePicker();

  Future showOpenFilePicker() {
    return promiseToFuture(_showOpenFilePicker());
  }
}

编辑:

而是从文档中

代码语言:javascript
复制
/// 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

代码语言:javascript
复制
extension WindowExt on Window {
 Future showOpenFilePicker() {
    final Object t = this;
    return promiseToFuture(callMethod(t, "showOpenFilePicker", []));
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66312871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档