Провайдер Flutter с Workmanager
Я использую Provider с Workmanager
Workmanager особенно полезен для выполнения периодических задач, таких как регулярное получение удаленных данных.
Я использую Workmanager для получения уведомлений в фоновом режиме
но мне нужен способ, когда я получаю уведомление, мне нужна функция вызова в провайдере, но у меня нет контекста
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) {
-->//// Code to get Notification from MY web get newNotificationData
Provider.of<Auth>(context, listen: false).update_notification(newNotificationData);
return Future.value(true);
});
}
void main() {
Workmanager().initialize(
callbackDispatcher, // The top level function, aka callbackDispatcher
isInDebugMode: true // If enabled it will post a notification whenever the task is running. Handy for debugging tasks
);
Workmanager().registerOneOffTask("1", "simpleTask"); //Android only (see below)
runApp(MyApp());
}
1 ответ
Создайте объект, чтобы вы могли получить к нему доступ из обоих
callbackDispatcher
. Например, используя синглтон или что-то подобное.
Затем в дереве виджетов флаттера вы можете использовать Provider.value
выставлять
Auth
.
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) {
Auth.instance.update_notification(newNotificationData);
return Future.value(true);
});
}
void main() {
Workmanager().initialize(
callbackDispatcher,
isInDebugMode: true
);
runApp(ChangeNotifierProvider.value(
value: Auth.instance, // Same object as above
child: MyApp()));
}