美文网首页
flutter版本升级到1.17.5版本后报错

flutter版本升级到1.17.5版本后报错

作者: 骑马纵天下 | 来源:发表于2020-07-24 14:34 被阅读0次
  • 原因:因为要使用最新版本的Xcode所以Mac系统版本升级到了10.15.5。后来发现去运行flutter项目会报很多错误,就直接把flutter版本更新到了1.17.5,再次运行还是报错。报错如下如下。1.17.5对于http请求的dio包 有最低版本需求dio: 3.0.0起步,有些语法在1.17环境下无法运行和打包,所以如果flutter sdk升级到1.17dio插件版本最低也得是3.0以后。
Compiler message:
../../Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-2.1.4/lib/src/dio_http_headers.dart:55:8: Error: The method 'DioHttpHeaders.add' has fewer named arguments than those of overridden method 'HttpHeaders.add'.
  void add(String name, value) {
       ^
org-dartlang-sdk:///third_party/dart/sdk/lib/_http/http.dart:694:8: Context: This is the overridden method ('add').
  void add(String name, Object value,
       ^
../../Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-2.1.4/lib/src/dio_http_headers.dart:70:8: Error: The method 'DioHttpHeaders.set' has fewer named arguments than those of overridden method 'HttpHeaders.set'.
  void set(String name, Object value) {
       ^
org-dartlang-sdk:///third_party/dart/sdk/lib/_http/http.dart:703:8: Context: This is the overridden method ('set').
  void set(String name, Object value,
       ^                                                                                                                                                                                                            
  • 解决办法:
    1. 升级dio版本m把dio插件版本设置为3.0.0或者以后的版本
    1. 把flutter版本回退到1.17以前。(如果Mac系统没有升级到最新的估计可以)
dio: ^3.0.9
  • 升级后报错,版本升级后有很多方法和类都有修改,只需要修改成现在的方法即可
Compiler message:                                  
lib/common/dao/order_dao.dart:743:19: Error: Method not found: 'UploadFileInfo'.
      "file": new UploadFileInfo(new File(path), name),                 
                  ^^^^^^^^^^^^^^                                        
lib/common/dao/order_dao.dart:747:30: Error: Method not found: 'FormData.from'.
      'params': new FormData.from(paramData),                           
                             ^^^^                                       lib/common/net/interceptors/header_interceptor.dart:15:12: Error: A value of type 'RequestOptions' can't be assigned to a variable of type 'Future<dynamic>'.
 - 'RequestOptions' is from 'package:dio/src/options.dart' ('../../Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.9/lib/src/options.dart').
 - 'Future' is from 'dart:async'.                                       
    return options;                                                     
           ^                                                                                                                    lib/common/net/interceptors/log_interceptor.dart:28:12: Error: A value of type 'Response<dynamic>' can't be assigned to a variable of type 'Future<dynamic>'.
 - 'Response' is from 'package:dio/src/response.dart' ('../../Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.9/lib/src/response.dart').
 - 'Future' is from 'dart:async'.                                       
    return response; // continue                                        
           ^                                                            lib/common/net/interceptors/log_interceptor.dart:37:12: Error: A value of type 'DioError' can't be assigned to a variable of type 'Future<dynamic>'.
 - 'DioError' is from 'package:dio/src/dio_error.dart' ('../../Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.9/lib/src/dio_error.dart').
 - 'Future' is from 'dart:async'.                                       
    return err;                                                         
           ^                                                            lib/common/net/interceptors/response_interceptor.dart:15:60: Error: The getter 'primaryType' isn't defined for the class 'String'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'primaryType'.
      if (option.contentType != null && option.contentType.primaryType == "text") {
                                                           ^^^^^^^^^^^                                                     lib/common/net/interceptors/response_interceptor.dart:23:18: Error: A value of type 'ResultData' can't be assigned to a variable of type 'Future<dynamic>'.
 - 'ResultData' is from 'package:nurse_coming_app/common/net/result_data.dart' ('lib/common/net/result_data.dart').
 - 'Future' is from 'dart:async'.                                       
      return new ResultData(response.data, false, response.statusCode, headers: response.headers);

修改内容

  • FormData.from
FormData.from修改为FormData.fromMap
  • UploadFileInfo
UploadFileInfo(File(path), name,)修改为MultipartFile.fromFile(path, filename: name)
  • option.contentType.primaryType
option.contentType.primaryType修改为option.contentType
options.contentType = ContentType.json;修改为options.contentType = Headers.jsonContentType;
  • 报错:Error: A value of type 'RequestOptions' can't be assigned to a variable of type 'Future<dynamic>'.在参数后面新增async即可。
@override
  onRequest(RequestOptions options) async{
    ///超时
    options.connectTimeout = 15000;

    return options;
  }

相关文章

网友评论

      本文标题:flutter版本升级到1.17.5版本后报错

      本文链接:https://www.haomeiwen.com/subject/tcbjlktx.html