Провайдер 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()));
}
Другие вопросы по тегам