在Android原生弹窗中引用Flutter页面

如果没有引入FlutterBoost,可以使用FlutterView

// 通过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);

FlutterEngine flutterEngine = new FlutterEngine(this);
flutterEngine.getDartExecutor().executeDartEntrypoint(
        DartExecutor.DartEntrypoint.createDefault()
);
// 关键代码,将Flutter页面显示到FlutterView中
flutterView.attachToFlutterEngine(flutterEngine);

详情见https://blog.csdn.net/ruiruiddd/article/details/115318612

如果引入了FlutterBoost,由于FlutterBoost暂不支持FlutterView这种级别
Issue: [Android] Boost新增FlutterView级别支持
在这里插入图片描述
所以,就需要使用Fragment了。
我们需要新建一个DialogFragment,代码如下所示

class MyTestFragmentDialog : DialogFragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val root = inflater.inflate(R.layout.layout_fragment_container,container,false)
        return root
    }

    override fun onStart() {
        super.onStart()

        val window = dialog!!.window
        if (window != null) {
            val params = window.attributes
            params.gravity = Gravity.BOTTOM
            params.width = ScreenUtils.getAppScreenWidth()
            window.attributes = params
        }

        val fragment =
            FlutterBoostFragment.CachedEngineFragmentBuilder(FlutterBoostFragment::class.java)
                .url("testPage") //TODO ---> 这里需要修改为你自己项目中的URL
                .build<FlutterBoostFragment>()

        val transaction = childFragmentManager.beginTransaction()
        transaction.replace(R.id.layout_container, fragment)
        transaction.commit()
    }
}

进行调用

MyTestFragmentDialog().show(supportFragmentManager,"tag")

效果如下所示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值