我正在使用Completer侦听onstatechanged,一切正常,我得到了一个json响应,但我真正想做的是通过调用MediaData.fromJson(data)使用模型类将json字符串更改为json对象。但我总是会遇到错误...
以下是我到目前为止尝试过的方法
class mainController{
Future<MediaData> getdata() async{
final completer = Completer<MediaData>();
final flutterWebViewPlugin = FlutterWebviewPlugin();
flutterWebViewPlugin.launch('https://www.instagram.com/picsart/?__a=1', hidden: true, userAgent: kAndroidUserAgent,);
flutterWebViewPlugin.onStateChanged.listen((viewState) async {
if (viewState.type == WebViewState.finishLoad) {
final data = await flutterWebViewPlugin.evalJavascript("document.documentElement.outerText");
completer.complete(MediaData.fromJson(json.decode(data)));
flutterWebViewPlugin.close();
}
});
return completer.future;
}
}错误-
[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: type 'String' is not a subtype of type 'Map<String, dynamic>'
E/flutter (20186): #0 mainController.getdata.<anonymous closure> (package:igsavers/controller/mainController.dart:20:52)
E/flutter (20186): <asynchronous suspension>
E/flutter (20186): 我发布了编译器中错误的图片,我得到了- Error Image
--这是我的模型MediaData原始码...
发布于 2021-03-28 20:26:52
错误似乎在第20行

尝试使用MediaData.fromJson(data)而不是MediaData.fromJson(json.decode(data))。
json.decode必须接收String,但数据当前为Map<String, dynamic>。那么,这个函数的使用就没有必要了。
https://stackoverflow.com/questions/66841233
复制相似问题