flutter - Flutter:HTTP Get在null上调用了getter'length'
问题描述
我的 http get 函数无法从我的 laravel 后端接收响应。它只是不断说明在 null 上调用了 getter 'length'。当我在浏览器或邮递员上测试 apihttp://localhost/ioio/public/api/settings
时,它能够接收数据和响应,所以我不确定为什么在颤振中我无法接收响应。
这是我的存储库功能。我试图打印出来看看代码在哪里遇到了错误。它在该final response =...
行停止,然后将导致 catch 函数出错。我也尝试过使用await http.get('http://localhost/ioio/public/api/settings');
,但结果是一样的。
Future<Setting> initSettings() async {
Setting _setting;
final String url = '${GlobalConfiguration().getString('api_base_url')}settings';
try {
final response = await http.get(url, headers: {HttpHeaders.contentTypeHeader: 'application/json'});
if (response?.statusCode == 200 && response.headers.containsValue('application/json')) {
if (json.decode(response.body)['data'] != null) {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('settings', json.encode(json.decode(response.body)['data']));
_setting = Setting.fromJSON(json.decode(response.body)['data']);
if (prefs.containsKey('language')) {
_setting.mobileLanguage.value = Locale(prefs.get('language'), '');
}
_setting.brightness.value = prefs.getBool('isDark') ?? false ? Brightness.dark : Brightness.light;
setting.value = _setting;
// ignore: invalid_use_of_visible_for_testing_member, invalid_use_of_protected_member
setting.notifyListeners();
}
} else {
print(CustomTrace(StackTrace.current, message: response.body).toString());
}
} catch (e) {
print(CustomTrace(StackTrace.current, message: url).toString());
return Setting.fromJSON({});
}
return setting.value;
}
这是打印出捕获错误的消息。
Error in (initSettings (package:ioio/src/repository/settings_repository.dart:52:34)) | [http://localhost/ioio/public/api/settings]
I/flutter (10877): NoSuchMethodError: The getter 'length' was called on null.
I/flutter (10877): Receiver: null
I/flutter (10877): Tried calling: length
这是我的主类在初始化期间调用 initSettings 函数的地方。
@override
void initState() {
settingRepo.initSettings(); //this line
settingRepo.getCurrentLocation();
userRepo.getCurrentUser();
super.initState();
}
这是第 52 行
print(CustomTrace(StackTrace.current, message: url).toString());
这是发生异常的行
final response = await http.get(url, headers: {HttpHeaders.contentTypeHeader: 'application/json'});
解决方案
推荐阅读
- c++ - 将一个向量的元素和分配给另一个向量的元素的并行算法
- javascript - 错误:StaticInjectorError(AppModule)[PaginationComponent -> PaginationConfig]
- c# - 使用自定义属性扩展现有 XSD 架构
- typescript - 与部分/特殊/全局键名的接口
- jquery - 如何在调整窗口大小时在 owl-carousel 中获得 div 高度?
- angular - 如何将输入类型的响应式表单作为包含该文件数据的文件提交?
- css - 为什么导航类名称是 navbar-default 而不是 navbar
- php - 在 $this->setCollection($collection); 之前设置记录计数
- c++ - 如何在 C++ 中生成自动 ID?
- vagrant - 带有 Vagrant 和 Hyper-V 的 Laravel Homestead