从java代码调用方法后,initState中的showDialog



我想在触发意图时在整个应用程序中显示一个对话框。为此,我在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(),
);
});
}

最新更新