原生native跳转flutter页面(记录)

参考: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
方式一:

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);

方式二:

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);
    }

flutter的页面:
在这里插入图片描述
在这里插入图片描述

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值