我得到以下错误,而从服务器获取数据,但我知道这个错误不是关于我如何获取数据。这与最新的颤振更新中增加的零安全有关。我对它不太熟悉。
这里是错误输入图片描述
我试着检查一下高亮显示的行是否有问题,对我来说没有问题。
下面是server_http .dart的代码:
ApiResponse<Map<String, dynamic>> resp = await get<Map<String, dynamic>>("detail/random");
if (resp.success ?? false) {
return StarConfig.fromJson(resp.data!);
}
return null;
}```
**and this stars_provider.dart**
```///Initialize engine and load last server
void initialize(BuildContext context) {
engine = OpenStar(onStarStageChanged: onStarStageChanged, onStarStatusChanged: onStarStatusChanged)
..initialize(
lastStatus: onStarStatusChanged,
lastStage: (stage) => onStarStageChanged(stage, stage.name),
groupIdentifier: groupIdentifier,
localizedDescription: localizationDescription,
providerBundleIdentifier: providerBundleIdentifier,
);
Preferences.instance().then((value) async {
starConfig = value.getServer() ?? await ServersHttp(context).random();
notifyListeners();
});
}```
what I need to change?
解决方案1:
我的理解是你正在使用
从服务器请求数据ApiResponse<Map<String, dynamic>> resp = await get<Map<String, dynamic>>("detail/random");
如果是,你需要做的就是把它改成:
ApiResponse<Map<String, dynamic>>? resp = await get<Map<String, dynamic>>("detail/random");
if (resp?.success ?? false) {
return StarConfig.fromJson(resp.data!);
}
Slution 2:
我认为这个函数是问题所在,starConfig
不接受null
,基于你的代码:
Preferences.instance().then((value) async {
starConfig = value.getServer() ?? await ServersHttp(context).random();
notifyListeners();
});
这部分是返回null
时,他唯一的工作是返回ApiResponse<Map<String, dynamic>>
await ServersHttp(context).random()
现在我相信这将工作,如果你
Preferences.instance().then((value) async {
ApiResponse<Map<String, dynamic>> test;
starConfig = value.getServer() ?? test.fromJson({});
notifyListeners();
});
注意:我不知道ServersHttp(context).random()
是做什么的。