callbackDispatcher function
void
callbackDispatcher()
Implementation
@pragma('vm:entry-point')
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) async {
switch (task) {
case backgroundUploadTask:
if (inputData == null) {
throw LanguageError('Failed to parse data to upload');
}
try {
final sendPort =
IsolateNameServer.lookupPortByName(inputData['taskId']);
final response = await UploadUtils.uploadFiles(
fieldName: inputData['fieldName'] ?? 'file',
files: (inputData['files'] as List)
.map((e) => File.fromJson(json.decode(e)))
.toList(),
headers:
Map<String, String>.from(json.decode(inputData['headers'])),
method: inputData['method'],
url: inputData['url'],
fields: Map<String, String>.from(json.decode(inputData['fields'])),
showNotification: inputData['showNotification'],
progressCallback: (progress) {
if (sendPort == null) return;
sendPort.send({
'progress': progress,
'taskId': inputData['taskId'],
});
},
onError: (error) {
if (sendPort == null) return;
sendPort.send(
{'error': error.toString(), 'taskId': inputData['taskId']});
},
taskId: inputData['taskId'],
);
if (sendPort == null || response == null) return response == null;
sendPort.send({
'responseBody': response.body,
'taskId': inputData['taskId'],
'responseHeaders': response.headers,
});
} catch (e) {
throw LanguageError('Failed to process background upload task');
}
break;
default:
throw LanguageError('Unknown background task: $task');
}
return Future.value(true);
});
}