gpt4 book ai didi

flutter - 无法使用工作管理器在后台执行异步方法

转载 作者:行者123 更新时间:2023-12-03 02:54:59 24 4
gpt4 key购买 nike

在我的应用程序中,我需要在后台执行一些任务(而应用程序不在前台运行)。我可以在后台执行一些方法,但是,我需要在后台执行一个我不能的异步方法。
这是我的代码的一部分:

void main() {
runApp(MaterialApp(
home: Home(),
));

Workmanager.initialize(callbackDispatcher, isInDebugMode: true);
Workmanager.registerPeriodicTask("1", "simplePeriodicTask",
existingWorkPolicy: ExistingWorkPolicy.replace,
frequency: Duration(minutes: 15),
initialDelay:
Duration(seconds: 5),
constraints: Constraints(
networkType: NetworkType.connected,
));
}

void callbackDispatcher() {
Workmanager.executeTask((task, inputData) {
_HomeState().manager();//This is not Working
print('Background Services are Working!');//This is Working
return Future.value(true);
});
}

class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {

@override
void initState() {
login();
super.initState();
}

void manager() async {
if (account == null) {
await login();
await managerLocal();
managerDrive();
} else {
await managerLocal();
managerDrive();
}
}

.......
.......

}

最佳答案

您需要等待您的方法实际完成:

void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
await _HomeState().manager();
print('Background Services are Working!');//This is Working
return true;
});
}
您的 manager方法可能应该返回 Future<void> , 因为它是 async .
如果您不确定如何使用 Future资料,随意看看 here .

关于flutter - 无法使用工作管理器在后台执行异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63036878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com