我想在触发意图时在整个应用程序中显示一个对话框。为此,我在android中添加了onNewIntent监听器,并调用了一个flutter方法:
@Override
protected void onNewIntent(Intent intent) {
if (intent.getAction().equals("android.hardware.usb.action.USB_DEVICE_ATTACHED")) {
methodChannel.invokeMethod("method_name", null);
}
super.onNewIntent(intent);
}
在main.dart中,在initState方法中为该方法设置一个methodCallHandler:
@override
void initState() {
super.initState();
AndroidApi.platform.setMethodCallHandler((call) async {
debugPrint("here");
if (call.method == "method_name") {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) => const LoadingDialog(),
);
}
});
}
在控制台中,我看到onNewIntent日志,并调用"method_name"
。并且我在控制台中看到CCD_ 2日志。但是没有示出该对话框。你能找到问题吗?
试试这个,
if (call.method == "method_name") {
Future.delayed(Duration(seconds: 1), () {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) => const LoadingDialog(),
);
});
}