オリジナルnativeジャンプflutterページ(レコード)
12863 ワード
参照先:https://www.jianshu.com/p/7b6522e3e8f1#comment-57516089参考:https://www.jianshu.com/p/0a839260d6fa参照先:https://www.jianshu.com/p/7afd90f3e422参照先:https://www.jianshu.com/p/7b6522e3e8f1方法1:
よびだし
方式2:
呼び出し:
flutterページはnativeに戻る
public class MyTestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_test);
FlutterEngine flutterEngine = new FlutterEngine(this);
flutterEngine.getNavigationChannel().setInitialRoute("/Result");
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
// FlutterView Flutter
FlutterView flutterView = new FlutterView(this);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
FrameLayout flContainer = findViewById(R.id.fl_container);
flContainer.addView(flutterView, lp);
// , Flutter FlutterView
flutterView.attachToFlutterEngine(flutterEngine);
}
}
よびだし
Intent intent = new Intent(getContext(), MyTestActivity.class);
startActivity(intent);
方式2:
public abstract class BaseFlutterActivity extends FlutterActivity implements LifecycleOwner {
protected Lifecycle mLifecycle;
private static final String ROUTE_ACTION = "android.intent.action.RUN";
@Override
protected void onCreate(Bundle savedInstanceState) {
FlutterEngine flutterEngine = new FlutterEngine(this);
getIntent().putExtra("route", getTargetPage());
mLifecycle = new LifecycleRegistry(this);
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
public static <P extends BaseFlutterActivity> void toPage(Context context, Class<P> target) {
Intent intent = new Intent(context, target);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setAction(ROUTE_ACTION);
intent.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(intent);
}
protected abstract String getTargetPage();
@NonNull
@Override
public Lifecycle getLifecycle() {
return mLifecycle;
}
}
public class ResultActivity extends BaseFlutterActivity {
@Override
protected String getTargetPage() {
return "/Result";
}
}
呼び出し:
BaseFlutterActivity.toPage(getContext(), ResultActivity.class);
flutterページはnativeに戻る
if (Platform.isAndroid) {
SystemNavigator.pop();
} else {
exit(0);
}