未处理的异常:类型“_InternalLinkedHashMap<String, dynamic>”不是“String”类型的子类型(在带有 POST API 的 dio 包中)

Posted

技术标签:

【中文标题】未处理的异常:类型“_InternalLinkedHashMap<String, dynamic>”不是“String”类型的子类型(在带有 POST API 的 dio 包中)【英文标题】:Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String' (in dio package with POST API) 【发布时间】:2021-11-28 08:44:21 【问题描述】:
class AuthenticationApi 
  final dio = Dio(BaseOptions(baseUrl: FlavorApi.getBaseUrl()));

  Future<dynamic> login(
      required String email, required String password) async 
    try 
      FormData formData = FormData.fromMap(
          'email': email, 'password': password, 'ip': '127.0.0.1');
      final response = await dio.post(
          '/login?oauth_consumer_key=$FlavorApi.getConsumerKey()&oauth_consumer_secret=$FlavorApi.getConsumerSecret()',
          data: formData);
      var responseData = jsonDecode(response.data); //error is coming here
      print('Data = $responseData');
     on DioError catch (e) 
      print(e.message);
    
  


当我将数据转换为 JSON 格式时,我收到错误 Unhandled Exception: type '_InternalLinkedHashMap' is not a subtype of type 'String'。

我尝试了很多解决方案,但都没有解决,谁能帮我解释一下为什么 dio 包会出现这个错误。您可以在下面看到问题图片:

【问题讨论】:

【参考方案1】:

jsonDecode 方法从字符串创建一个 Map。 您的 response.data 已经是一个 Map。

可以查看here的方法。

另外,我建议您检查 JSON 序列化。它与 jsonDecode 在同一页面上,但这里是特定的link。

希望我的回答对你有帮助! :)

【讨论】:

谢谢@Marius 它正在工作,再次感谢您的帮助。

以上是关于未处理的异常:类型“_InternalLinkedHashMap<String, dynamic>”不是“String”类型的子类型(在带有 POST API 的 dio 包中)的主要内容,如果未能解决你的问题,请参考以下文章

颤动的json未处理的异常:类型'_InternalLinkedHashMap

ValueNotifier 未处理的异常:类型“String”不是“index”类型“int”的子类型

Flutter 中的错误:未处理的异常:“Null”类型不是“String”类型的子类型

未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤振

未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常

Dart 未处理的异常:类型 'List<dynamic>' 不是类型 'Family' 的子类型,- Flutter