如何解决异步功能在WorkManager中不起作用
我正在使用WorkManager软件包执行一些后台任务。(更新用户的位置)。 https://pub.dev/packages/workmanager
这是我的顶层功能。
void callbackDispatcher() {
Workmanager.executeTask((task,inputData) {
_HomeScreenState().updateUserLoc();
return Future.value(true);
});
}
这是我的初始化状态,是我初始化工作经理的地方。
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(” execute updateUserLoc“);”时在功能下方,它会被打印,但是在功能下方,它不会被打印。
我在这里做错了什么。 请帮忙。
解决方法
您需要适当地等待您的未来:
void callbackDispatcher() {
Workmanager.executeTask((task,inputData) async {
await _HomeScreenState().updateUserLoc();
return true;
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。