本篇文章中写到的是颤振调用了安卓原生的TextView案例
添加原生组件的流程基本上可以描述为:
1 android端实现原生组件PlatformView提供原生查看
2 android端创建PlatformViewFactory用于生成PlatformView
3 android端创建FlutterPlugin用于注册原生组件
4颤振平台嵌入原生查看
创建在颤振工程时会生成几个文件夹,自由是放颤振工程代码,android和ios文件夹分别是对应的双平台的原生工程。
在这里直接打开Android工程目录,项目默认生成了GeneratedPluginRegistrant和MainActivity两个文件,GeneratedPluginRegistrant不要动,GeneratedPluginRegistrant是颤振中配制使用其他插件时,程序在编译时自动进行插件注册使用的类。
在MainActivity的包下新建自定义,颤振的原生视图不能直接继承自认为,需要实现提供的PlatformView接口:
公共类TestTextView实现PlatformView r { 私人最终TextView mTestTextView;/* * * * @param上下文 * @param信使 * @param id * @param params初始化时颤振传递过来的参数 */TestTextView(上下文环境,BinaryMessenger信使,int id, Map<字符串,Object>params) {//创建TextView TextView lTextView=new TextView(上下文); lTextView.setText (“Android的原生TextView”); 这一点。mTestTextView=lTextView;//颤振传递过来的参数 如果(params !=null&, params.containsKey(“内容”)){ 字符串myContent=(字符串)params.get(“内容”); lTextView.setText (myContent); } } @Override 公众视线getView () { 返回mTestTextView; } @Override 公共空间处理(){ } } >之前
进口android.content.Context; 进口java.util.Map; 进口io.flutter.plugin.common.BinaryMessenger; 进口io.flutter.plugin.common.StandardMessageCodec; 进口io.flutter.plugin.platform.PlatformView; 进口io.flutter.plugin.platform.PlatformViewFactory; 公开课TestViewFactory延伸PlatformViewFactory { 私人最终BinaryMessenger信使; 公共TestViewFactory (BinaryMessenger信使){ 超级(StandardMessageCodec.INSTANCE); 这一点。信使号=信使; }/* * * * @param上下文 * @param id * @param args参数是由摆动传过来的自定义参数 * @return */@SuppressWarnings(“unchecked”) @Override 公共PlatformView创建(上下文语境、int id对象args) {//颤振传递过来的参数 Object> Map<字符串;params=(Map<字符串,Object>)参数;//创建TestTextView 返回新TestTextView(上下文、信使、id、params); } >之前
/* * *颤振调用android原生视图 * */公开课TestFluttertoAndroidTextViewPlugin { 公共静态孔隙registerWith (PluginRegistry注册表){//防止多次注册 最终字符串键=TestFluttertoAndroidTextViewPlugin.class.getCanonicalName (); 如果(registry.hasPlugin(关键))返回;//初始化PluginRegistry PluginRegistry。注册商注册=registry.registrarFor(关键);//设置标识 registrar.platformViewRegistry () .registerViewFactory (“com。flutter_to_native_test_textview”,新TestViewFactory (registrar.messenger ())); } } >之前MainActivity中注册
进口android.os.Bundle 进口io.flutter.app.FlutterActivity 进口io.flutter.plugins.FlutterToAndroidPlugins 进口io.flutter.plugins.GeneratedPluginRegistrant 类MainActivity: FlutterActivity () { 覆盖有趣alt="颤振中嵌入Android原生TextView实例教程">//这里设置的viewType值与android中插件注册的标识一至//registrar.platformViewRegistry () .registerViewFactory (“com。flutter_to_native_test_textview”,新TestViewFactory (registrar.messenger ())); mTextWidget=容器( 身高:200, 孩子:AndroidView (//设置标识 viewType:“com.flutter_to_native_test_textview”, ), ); @override 小部件构建(BuildContext上下文){//TODO:实现构建 返回支架( appBar: appBar,//显示的页面 身体:mTextWidget, ); } >之前<强> 4.2颤振调用原生视图并传参数强>
颤振中嵌入Android原生TextView实例教程