flutter嵌入原生组件_Flutter 升级到 1.12.13 后,嵌入Android原生组件的问题

升级Flutter到1.12.13后,嵌入原生Android组件如百度地图需要更新代码。需将`PluginRegistry`改为`FlutterEngine`并使用`ShimPluginRegistry`。在`MainActivity`的`configureFlutterEngine`方法中注册原生组件。
摘要由CSDN通过智能技术生成

Flutter 升级到 1.12 后,使用原生Android组件有些变化,需要更新Android代码

关于 Flutter 如何嵌入Android组件请自行百度。

这里我是修改百度地图。import com.baidu.mapapi.map.MapView;

import io.flutter.plugin.common.PluginRegistry;

import io.flutter.plugin.common.StandardMessageCodec;

public final class MapRegistrant {

public static void registerWith(PluginRegistry registry, MapView mapView) {

final String key = MapRegistrant.class.getCanonicalName();

if (registry.hasPlugin(key)) return;

PluginRegistry.Registrar registrar = registry.registrarFor(key);

registrar.platformViewRegistry().registerViewFactory("BDMap", new MapViewFactory(new StandardMessageCodec(), mapView));

}

}

Flutter 升级到 1.12 后,修改如下import com.baidu.mapapi.map.MapView;

import io.flutter.embedding.engine.FlutterEngine;

import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;

import io.flutter.plugin.common.PluginRegistry;

import io.flutter.plugin.common.StandardMessageCodec;

public final class MapRegistrant {

public static void registerWith(FlutterEngine flutterEngine, MapView mapView) {

final String key = MapRegistrant.class.getCanonicalName();

ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);

if (shimPluginRegistry.hasPlugin(key)) return;

PluginRegistry.Registrar registrar = shimPluginRegistry.registrarFor(key);

registrar.platformViewRegistry().registerViewFactory("BDMap", new MapViewFactory(new StandardMessageCodec(), mapView));

}

}

registry 改为 flutterEngine,然后使用 ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);

Flutter 1.12 中 MainActivity 使用了 configureFlutterEngine 方法,不再使用  onCreate 方法

在 configureFlutterEngine 方法中使用 如下方式调用public class MainActivity extends FlutterActivity {

@Override

public void configureFlutterEngine(FlutterEngine flutterEngine){

GeneratedPluginRegistrant.registerWith(flutterEngine);

MapView mapView = new MapView(this);

MapRegistrant.registerWith(flutterEngine, mapView);

}

}

关于 Flutter 1.12 和 Android 通信的其它问题,参考 这篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值