我有一个有 3 个屏幕的应用程序。我还有平台特定的代码,其中 html 文件由我的应用程序处理。我希望实现的是每次用户打开一个 html 文件时,它都会在我的应用程序中打开,并打开特定页面,比方说 2。我有代码来处理应用程序中打开的文件(当只有一个屏幕时),但我不确定如何处理多个屏幕。
这个相关代码:
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
new MethodChannel(getFlutterEngine().getDartExecutor(), CHANNEL).setMethodCallHandler(new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
if (call.method.equals("getReportFile")) {
try {
String res = getReportFile();
result.success(res);
} catch (SameFilesException e) {
Log.i(TAG, e.getLocalizedMessage());
}
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够从 MainActivity 设置特定屏幕,因为它可以在 MVC 模式中很好地发挥作用,但我不确定如何去做。有人提到https://api.flutter.dev/javadoc/io/flutter/embedding/android/FlutterActivity.html#getInitialRoute--,但我不确定在哪里可以使用方法1:传递布尔值作为FlutterActivityLaunchConfigs。 EXTRA_INITIAL_ROUTE 与启动 Intent,在 MainActivity 执行期间。
您可以扩展io.flutter.embedding.android.FlutterActivity以覆盖初始路线或飞镖入口点。也可以推送和弹出路由:
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@NonNull
@Override
public String getDartEntrypointFunctionName() {
return "anotherMain";
}
@NonNull
@Override
public String getInitialRoute() {
String action = getIntent().getAction();
// Initial route depends on intent's action
if (action != null && action.equals("example_action")) {
return "some_route";
} else {
return "another_route";
}
}
@Override
protected void onNewIntent(@NonNull Intent intent) {
String action = intent.getAction();
// Example action
boolean routeIntent = action != null && action.equals("push_a_route");
FlutterEngine engine = getFlutterEngine();
if (routeIntent && engine != null) {
// Pushing a new route when new intent received
engine.getNavigationChannel().pushRoute("some_route");
}
}
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
GeneratedPluginRegistrant.registerWith(new ShimPluginRegistry(flutterEngine));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |