Flutter报错:type '_InternalLinkedHashMap String, dynamic' is not a subtype of type 'String'

今天遇到一个问题  在使用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

记录一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值