I’m having trouble passing and retrieving inputData in Flutter’s Workmanager. I’m trying to send some data (like id and date) when registering a task, but when I try to access the inputData in the background task, I keep getting null.
Workmanager().registerOneOffTask(
"simpleTask", // Unique task name
"simpleTask", // The task name
tag: '1',
inputData: {'id': '1', 'date': '16-10-2024'}, // Input data to be passed
);
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) {
print('Task name: $task');
print('Input data: $inputData'); // This prints null
print('Notification id: ${inputData?["id"]}');
print('Notification date: ${inputData?["date"]}');
return Future.value(true);
});
}
Workmanager().initialize(
callbackDispatcher,
isInDebugMode: true // For debugging
);
2
Answers
The issue you're encountering is related to the version of the workmanager package. Instead of using the following dependency:
You should reference a specific commit from the GitHub repository to resolve this issue. Update your pubspec.yaml file like so:
This points to a specific commit that addresses the problem you're facing.
It's likely that the Flutter Workmanager team will resolve this in future releases, so keep an eye out for updates. Once the issue is officially fixed in a newer release, you should be able to switch back to using the standard versioning.
Make sure you initialize
Workmanager
before registering any tasks, and ensure yourcallbackDispatcher
is a top-level function annotated with@pragma('vm:entry-point')
. Here’s how you can adjust your code:Initialize Workmanager before registering the task:
Annotate your
callbackDispatcher
with@pragma('vm:entry-point')
and ensure it’s a top-level function:By initializing
Workmanager
before registering the task and properly annotating thecallbackDispatcher
, you should be able to access theinputData
in your background task.