Flutter学习中相关问题记录
记录在学习Flutter的过程中遇到的问题,积累宝贵的财富。
问题1
在Flutter中利用Getx来进行状态管理、路由跳转等,但是在logic类之外调用该类中的方法时报错如下:
Flutter: Instance member 'signInWithGoogle' can't be accessed using static access. (static_access_to_instance_member at )
最终参考了stackOverflow解决了问题。
之前报错时的代码:
LoginLogic.loginUserCenterAuth().then((data){})
在调用类中的方法时,应该首先创建 一个实例来调用实例方法,所以正确的写法应用如下:
LoginLogic().loginUserCenterAuth().then((data){})
问题2
Dio添加拦截器,OnRequest以及onResponse中相关报错。
The argument type 'void Function(DioError)' can't be assigned to the parameter type 'void Function(DioError, ErrorInterceptorHandler)?'
报错时的代码:
onRequest: (RequestOptions options){}
该错误查看源码也可以进行解决,也可以参考stackOverflow 。OnRequest中需要携带两个参数,正确的代码应该如下:
onRequest: (RequestOptions options, RequestInterceptorHandler handler){}
问题3
因为使用Getx进行状态管理,使用dio进行HTTP请求,它们都有response类,所以会造成冲突,参考解决方法
The name 'Response' is defined in the libraries 'package:dio/src/response.dart (via package:dio/dio.dart)' and 'package:get/get_connect/http/src/response/response.dart'.
解决方法:即修改get的引入方式:
import 'package:get/get.dart' hide Response;