颤振中嵌入Android原生TextView实例教程

  

  

本篇文章中写到的是颤振调用了安卓原生的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实例教程

颤振中嵌入Android原生TextView实例教程