我使用 workManager 在后台执行任务。
在调试模式下一切都按预期工作,但是当我在发布模式下运行应用程序时它不起作用。
并向我展示这些错误。
我在互联网上搜索了这个问题,我发现我应该把 @pragma('vm:entry-point') 放在 callBAckDispatcher 函数的顶部。
我做到了,但仍然没有工作
知道为什么吗?或任何其他解决方案
这是我的主
void main() async {
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await Workmanager().initialize(callBAckDispatcher, isInDebugMode: false);
await getuserinformationfromcach();
await getCurrentFollowingAndFollowers(currentusername);
FirebaseMessaging.onBackgroundMessage(background);
await FirebaseMessaging.instance.subscribeToTopic("admin");
runApp(MyApp());
}
这是 callBAckDispatcher 函数。
@pragma('vm:entry-point')
callBAckDispatcher() {
WidgetsFlutterBinding.ensureInitialized();
Firebase.initializeApp();
Workmanager().executeTask((taskName, inputData) async {
if (taskName == "timerchat") {
int id = inputData!['id'];
if (await returnUserNameTimer() == await returnUserName()) {
await sendTimerChat(id, await returnUserName());
}
} else if (taskName == "timerpost") {
int id = inputData!['id'];
if (await returnUserNameTimer() == await returnUserName()) {
await sendTimerPost(id, await returnUserName());
}
}
return Future.value(true);
});
}