我试图使用插件Android 警报管理器在后台执行计时器和代码,但不能真正让它正常工作。如果我将“print(”v“)”之类的东西设置为回调 - 一切正常,但是当我尝试做一些额外的事情时,它就不起作用了。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:android_alarm_manager/android_alarm_manager.dart';
import 'dart:isolate';
class MyApp extends StatefulWidget {
_MyAppState createState() => _MyAppState();
}
startTimer(sendport) async {
await AndroidAlarmManager.oneShot(
Duration(seconds: 60), 0, timerCallback(sendport),
wakeup: true, exact: true);
}
timerCallback(sendport) {
sendport.send("DONE");
}
class _MyAppState extends State<MyApp> {
ReceivePort receivePort = ReceivePort();
SendPort sendport;
@override
void initState() {
super.initState();
AndroidAlarmManager.initialize();
receivePort.listen((v) {
print(v);
});
}
@override
Widget build(BuildContext context) {
RaisedButton(
onPressed: startTimer(sendport),
child: Text("Start"),
);
}
}
我希望该代码在 1 分钟后发送消息,而不是在执行后立即收到消息并得到 Error "/flutter (11424): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: 'dart: ui/plugins.dart':断言失败:第 62 行:'':'callback' 不能为空。”