我正在尝试使用flutter制作闹钟,并使用警报路径(“ / alarm”路径)启动flutter活动。我已经完成了使用MethodChannels启动MainActivity的工作,但是我需要以某种方式路由到“ / alarm”,但是调用getFlutterView()。pushRoute(“ / alarm”)不会执行任何操作。该活动仅在主视图中开始,而不是警报路线。
谢谢!
我已经设法使用MethodChannels启动startActivity,但是在onCreate中调用getFlutterView()。pushRoute(“ / alarm”)时,它不会更改路由。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
// This does not change the route (setInitialRoute doesn't work either)
getFlutterView().pushRoute("/alarm");
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("setAlarm")) {
// pushRoute works here, but not in onCreate
getFlutterView().pushRoute("/alarm");
} else {
result.notImplemented();
}
}
}
);
}
预期结果:将路线更改为“ /警报”
实际结果:什么也没发生,活动在初始路线上打开,例如主页
答案 0 :(得分:0)
找到了解决方案,
pushRoute()
或setInitialRoute()
在View
膨胀之前不起作用。
这是有效的代码:
FlutterView.FirstFrameListener mListener = new FlutterView.FirstFrameListener() {
@Override
public void onFirstFrame() {
getFlutterView().pushRoute("/alarm");
}
};
getFlutterView().addFirstFrameListener(mListener);