今天遇到一个问题 在使用FutureBuilder的时候
snapshot.data能正常获取到值,但是在取其中的数据(snapshot.data)['realData']打印的时候报错
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
从报错信息来看可以知道是类型转换错误的问题 贴一下我的代码
DioCustomUtil的post方法:
/// post
static Future<Map> post(url, data) =>
request(url, data: data, method: "post");
然后,
Future getDatas() async {
Map map = {'eduLeiXing': 'D001'};
Map paramsMap = await encryptionHelper.encryptParams(map);
final a=await DioCustomUtils.post(Urls.queryCredits+'?token='+MyConstant.mToken, paramsMap);
return a;
}
var _futureBuilderFetch;
@override
void initState(){
statusBarHeight = MediaQueryData.fromWindow(window).padding.top;
_futureBuilderFetch= getDatas();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: _futureBuilderFetch //防止多次请求网络
,builder: (context,snapshot){
if(snapshot.hasData){
print('===snapshot:${snapshot.data}===');
//var data=snapshot.data //修改前
Map data= new Map<String, dynamic>.from(snapshot.data); //修改后
print('===realData:${data['realData']}===');
return Text('${snapshot.data}');
}else{
return Center(
child: CircularProgressIndicator(),
);
}
}),
);
}
百度了一下 正好找到一个答案
参考这位兄弟的:
https://blog.csdn.net/nathan1987_/article/details/89411685
记录一下。