Flutter Provider with Workmanager
338
Create and keep the Auth
-object where you can access it from both callbackDispatcher
and the widget tree. For example using a singleton or something similar. Then in the flutter widget tree you can use Provider.value
to expose 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()));
}
Author by
SAWA Group
Updated on December 01, 2022Comments
-
SAWA Group over 1 year
I use Provider with Workmanager
Workmanager is especially useful to run periodic tasks, such as fetching remote data on a regular basis.
I use Workmanager for get Notification in Background
but I need way when I get notification I need call function in Provider but i not have context
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()); }
Update I need to update current user Auth
class Auth extends ChangeNotifier { bool _isLoggedIn = false; User? _user; void update_notification(newNotificationData){ this._user!.notification.add(newNotificationData); } void Login(username,password){ //// Code to login and get UserData this._isLoggedIn = true; this._user = User.fromJson(data); } }
User Model
class User { User( {required this.id, required this.username, required this.fullName, required this.email, required this.notification}); User.fromJson(Map<String, dynamic> json) : id = json['id'], username = json['username'], fullName = json['fullName'], email = json['email'], notification = json['notification']; final int id; final String username; final String fullName; final String email; List<dynamic> notification; Map<String, dynamic> toJson() => { 'id': id, 'username': username, 'fullName': fullName, 'email': email, 'notification': notification, }; }
-
rckrd over 2 yearsPlease provide an Minimal, Reproducible Example
-
-
SAWA Group over 2 yearsI cannot access to current data (User instance) is null @rckrd
-
rckrd over 2 yearsSo where’s
data
supposed to come from? This seems like an unrelated question to the original. -
SAWA Group over 2 yearsDate user get from API and create new instance from user in provider ,and data notification is come from Pusher Broadcast, I get the data correctly but I need to update notification for current user in the provider I cannot access to current login user from callbackDispatcher
-
rckrd over 2 yearsYou need to provide more context for me to understand. In your code above
user
inAuth
will be null untilLogin
is called.