Flutter GetX报错:参数类型Null无法分配给ApiRepository类型求解决
解决GetX报错:
The argument type 'Null' can't be assigned to the parameter type 'ApiRepository' 问题根源
你写的HomeController构造函数要求必须传一个ApiRepository实例,但调用时没传参数或者传了null,导致类型不匹配。从截图推测,你的HomeController用required修饰了这个参数,所以不允许留空。
两种解决办法
办法1:先全局注册ApiRepository,再给Controller传参
- 打开
main.dart,在runApp之前注册ApiRepository:
void main() { // 注册ApiRepository单例,后续可通过Get.find()获取 Get.lazyPut(() => ApiRepository()); // 也可用Get.put直接创建实例,区别是lazyPut会延迟初始化 // Get.put(ApiRepository()); runApp(MyApp()); }
- 回到
main_tab.dart,注入HomeController时用Get.find()拿到已注册的实例:
Get.put(HomeController(apiRepository: Get.find<ApiRepository>()));
办法2:直接传ApiRepository实例
如果不需要全局共用ApiRepository,也可以在创建Controller时直接实例化传入:
Get.put(HomeController(apiRepository: ApiRepository()));
补充说明
你的HomeController代码结构应该类似这样:
class HomeController extends GetxController { final ApiRepository apiRepository; HomeController({required this.apiRepository}); }
这里的required关键字强制参数非空,所以只要确保传入的ApiRepository不是null就能解决问题。
内容的提问来源于stack exchange,提问作者JustPeople
相关产品推荐
相关产品推荐

