Flutter 飞镖级';字符串';没有实例方法';铸造';
我编写了一个dart方法,该方法采用泛型类型T,然后尝试将动态类型强制转换为T。(编辑:我已经从等式中删除了泛型,而从动态转换为字符串仍然失败,并出现了相同的错误。) 在这个特定场景中,我将传递一个字符串作为T 下面一行抛出错误Flutter 飞镖级';字符串';没有实例方法';铸造';,flutter,dart,Flutter,Dart,我编写了一个dart方法,该方法采用泛型类型T,然后尝试将动态类型强制转换为T。(编辑:我已经从等式中删除了泛型,而从动态转换为字符串仍然失败,并出现了相同的错误。) 在这个特定场景中,我将传递一个字符串作为T 下面一行抛出错误 T result = value.cast<T>(); T result=value.cast(); 完整的代码如下 class JsonObject{ final Map<String, dynamic> _map; Js
T result = value.cast<T>();
T result=value.cast();
完整的代码如下
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);
}
类JsonObject{
最终地图(地图),;
JsonObject(这张地图);
T getValue(字符串键){
动态值=_映射[键];
如果(值==null)
抛出新的JsonParseException.979;(“JsonMap:无法使用key=“+key”找到值);
T结果=value.cast();
如果(结果==null)
抛出新的JsonParseException.((“JsonMap:value with key=“+key+”不是请求的类型”+T.toString());
返回结果;
}
字符串getString(字符串键)=>getValue(键);
}
我得到的错误如下。在第一次调用应用程序代码之后,我已经修剪了堆栈跟踪
06-25 09:34:04.883 I/颤振(7755):类“String”没有实例
方法“cast”。06-25 09:34:04.883颤振(7755):接收器:“foo1”
06-25 09:34:04.883我/颤振(7755):尝试呼叫:cast()
06-25 09:34:04.920 I/flatter(7755):当抛出异常时,
这是堆栈:06-25 09:34:05.004 I/颤振(7755):#0Object.noSuchMethod(dart:core patch/Object_patch.dart:50:5)06-25 09:34:05.011 I/颤振(7755):#1 JsonObject.getValue (包:my_app/Util/json_parser.dart:62:26)
cast
是List
s和Iterable
s上的一种方法,而不是一般类型上的方法。您正在以的身份查找
替换T result=value.cast()代码>带T结果=值为T代码>。如果值
不是t
,则会引发此错误。要么接受它,要么抓住它并抛出你的JsonParseException