Dart Class'String'没有实例方法'cast'

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我编写了一个带有泛型类型T的dart方法,然后尝试将动态类型转换为T.(编辑:我已经从等式中删除了泛型,并且从动态转换为String仍然失败并出现相同的错误。 )

在这个特定的场景中,我传递一个字符串作为T.

以下行引发错误

 T result = value.cast<T>();

完整的代码如下......

class JsonObject{
    final Map<String, dynamic> _map;
    JsonObject(this._map);

    T getValue<T>(String key) {
        dynamic value = _map[key];
        if (value == null)
            throw new JsonParseException._("JsonMap: can not find value with key = "+key);
        T result = value.cast<T>();
        if (result == null)
            throw new JsonParseException._("JsonMap: value with key = "+key+" is not of requested type "+T.toString());
        return result;
    }

    String getString(String key) => getValue<String>(key);
}

我得到的错误如下。在第一次调用我的应用程序代码后,我已经修剪了堆栈跟踪。

06-25 09:34:04.883 I / flutter(7755):类'String'没有实例方法'cast'。06-25 09:34:04.883 I / flutter(7755):接收者:“foo1”06-25 09:34:04.883 I / flutter(7755):试着打电话:cast()06-25 09:34:04.920我/ flutter(7755):当抛出异常时,这就是堆栈:06-25 09:34:05.004 I / flutter(7755):#0 Object.noSuchMethod(dart:core-patch / object_patch.dart:50: 5)06-25 09:34:05.011 I / flutter(7755):#1 JsonObject.getValue(package:my_app / Util / json_parser.dart:62:26)

提问于
用户回答回答于

castLists和Iterables 的方法,而不是一般类型。你在找as

替换T result = value.cast<T>();T result = value as T;。如果value不是,这将抛出T。无论是生活在那里,还是抓住它并扔掉你的JsonParseException

用户回答回答于

你没有发布你的cast方法的代码,所以我不知道那里发生了什么,但该方法不在dynamicString数据类型。你需要做类似的事情cast<T>(value);

扫码关注云+社区

领取腾讯云代金券