异步功能在 WorkManager 中不起作用
Async function not working in WorkManager
我正在使用 WorkManager 包来执行一些后台任务。(更新用户的位置)。
https://pub.dev/packages/workmanager
这是我的顶级函数。
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) {
_HomeScreenState().updateUserLoc();
return Future.value(true);
});
}
这是我的 initstate,我在这里初始化了 workmanager。
void initState() {
super.initState();
Workmanager.initialize(
callbackDispatcher,
isInDebugMode: true,
);
Workmanager.registerPeriodicTask(
"1",
"h"
frequency: Duration(minutes: 15),
);
这是我的 updateUserLoc() 函数。
updateUserLoc() async {
await GetusersLocation();
GeoFirePoint point = geo.point(latitude: lat, longitude: long);
_firestore.collection('locations').document(widget.userid).setData(
{'position': point.data},
merge: true,
);
print("executing the updateUserLoc");
}
这行不通,
当我放置“print(”执行 updateUserLoc“);”在函数下方,它会被打印,但在下方时,它不会。
我在这里做错了什么。
请帮忙
你需要好好等待你的未来:
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
await _HomeScreenState().updateUserLoc();
return true;
});
}
我正在使用 WorkManager 包来执行一些后台任务。(更新用户的位置)。 https://pub.dev/packages/workmanager
这是我的顶级函数。
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) {
_HomeScreenState().updateUserLoc();
return Future.value(true);
});
}
这是我的 initstate,我在这里初始化了 workmanager。
void initState() {
super.initState();
Workmanager.initialize(
callbackDispatcher,
isInDebugMode: true,
);
Workmanager.registerPeriodicTask(
"1",
"h"
frequency: Duration(minutes: 15),
);
这是我的 updateUserLoc() 函数。
updateUserLoc() async {
await GetusersLocation();
GeoFirePoint point = geo.point(latitude: lat, longitude: long);
_firestore.collection('locations').document(widget.userid).setData(
{'position': point.data},
merge: true,
);
print("executing the updateUserLoc");
}
这行不通,
当我放置“print(”执行 updateUserLoc“);”在函数下方,它会被打印,但在下方时,它不会。
我在这里做错了什么。 请帮忙
你需要好好等待你的未来:
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
await _HomeScreenState().updateUserLoc();
return true;
});
}