如何解决如何在扑朔迷离中将数据发送到服务器?
使用workmanager时:^ 0.2.3我已经能够在后台执行一些工作,但是我无法在后台使用http包将数据发送到服务器。当到达api调用时,它根本不会发生。
这是我在main中写的:
void callbackDispatcher() {
Workmanager.executeTask((task,inputData) async {
switch (task) {
case simpleTaskKey:
await sendUnsentDataToServerIfOffline(inputData);
break;
}
return Future.value(true);
});
}
void sendDetailsAPIFromWorker(
List<Details> detailsToSent,Map<String,dynamic> inputData) async {
List<TDetails> tDetails = [];
detailsToSent.forEach((detail) => tDetails.add(TDetails(
serviceTime: detail.serviceTime,fromStopTime: detail.fromStopTime,toStopTime: detail.toStopTime,submitType: detail.submitType,status: detail.status,travelledDistance: 0.0)));
SendDetails sendDetail = SendDetails(
userToken: inputData['token'],missionId: inputData['service_id'],details: tDetails);
Map<String,String> requestHeaders = {
'Content-type': 'application/json','Accept': 'application/json'
};
try {
final url = '${inputData['base_url']}$kAPISubmitMissionTransportURL';
try {
final response = await http.post(url,headers: requestHeaders,body: json.encode(sendDetail.toJson()));
if (json.decode(response.body)['Status'] == 1) {
detailsToSent.forEach((detail) => DBHelper.deleteStopTransportData(
kTransportDetailsTableName,inputData['service_id'],detail.serviceDetailId));
List<int> ids = [];
await detailsToSent
.forEach((detail) => ids.add(detail.serviceDetailId));
print('ids to to set send: $ids');
await DBHelper.setDetailSent(
kTransportDetailsTableName,ids,inputData['service_id']);
}
} catch (error) {
}
} catch (error) {
print(error);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。