当前位置: 首页 > news >正文

茶叶网站规划网站建设都分几个阶段

茶叶网站规划,网站建设都分几个阶段,电子商务网站建设的定义,手机字体下载大全免费网站Flutter 内嵌 android 原生 View以及相互跳转 一. 内嵌android 原生View二、android 与 flutter 相互跳转 一. 内嵌android 原生View 在android 工程的包名下,也可在MainActivity创建 android 原生view ,继承PlatformView // 1.自定义textview public st…

Flutter 内嵌 android 原生 View以及相互跳转

    • 一. 内嵌android 原生View
    • 二、android 与 flutter 相互跳转

一. 内嵌android 原生View

  1. 在android 工程的包名下,也可在MainActivity创建 android 原生view ,继承PlatformView
    // 1.自定义textview
    public static class MyTextView implements PlatformView{

     private TextView textView ;/**** @param context* @param messenger 用于消息传递* @param id 生成时会分配一个唯一 ID* @param maps Flutter 传递的初始化参数。*/public MyTextView(Context context ,BinaryMessenger messenger,int id,Map<String,Object> maps) {textView = new TextView(context);textView.setText("我是来自android原生的textView");if (maps != null){String text = maps.get("text").toString();textView.setText(text);}textView.setTextColor(Color.RED);}// 返回要嵌入 Flutter 层次结构的Android View@Nullable@Overridepublic View getView() {return textView;}//释放此View时调用,此方法调用后 View 不可用,此方法需要清除所有对象引用,否则会造成内存泄漏。@Overridepublic void dispose() {}
    

    }

  2. 新建MyViewFactory.java注册PlatformView

public class MyViewFactory extends PlatformViewFactory {private final BinaryMessenger messenger;public MyViewFactory(BinaryMessenger messenger) {super(StandardMessageCodec.INSTANCE);this.messenger = messenger;}@SuppressWarnings("unchecked")@Overridepublic PlatformView create(Context context, int id, Object args) {Map<String, Object> params = (Map<String, Object>) args;return new MainActivity.MyTextView(context, messenger, id, params);}}
  1. 创建plugin
public class MyViewFlutterPlugin implements FlutterPlugin {@Overridepublic void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {BinaryMessenger binaryMessenger = binding.getBinaryMessenger();binding.getPlatformViewRegistry().registerViewFactory("plugins.nightfarmer.top/myview",new MyViewFactory(binaryMessenger));}@Overridepublic void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}
}
  1. 在MainActivy 中注册
    @Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {super.configureFlutterEngine(flutterEngine);flutterEngine.getPlugins().add(new MyViewFlutterPlugin());}
  1. 在flutter 中使用
Container(width: 100,height: 100,child:  AndroidView(viewType: "plugins.nightfarmer.top/myview",creationParams: {'text':'Flutter传给AndroidTextView的参数'},creationParamsCodec: StandardMessageCodec(),),),

二、android 与 flutter 相互跳转

  1. flutter 挑战到 原生Activity
  var platform = MethodChannel('com.example.flutter/native_channel');void goToNativeActivity() {platform.invokeMethod('goToNative');}

在MainActivty 中注册通道跳转到TestActivity

 private static final String CHANNEL = "com.example.flutter/native_channel";@Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {super.configureFlutterEngine(flutterEngine);flutterEngine.getPlugins().add(new MyViewFlutterPlugin());//注册通道new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler((call, result) -> {// 接收来自Flutter的方法调用if (call.method.equals("goToNative")) {Intent intent = new Intent(MainActivity.this, TestActivity.class);startActivity(intent);result.success(true);} else {result.notImplemented();}});}
  1. Activity 中跳转Flutter页面
    在Manifest.xml 中注册
<activityandroid:name="io.flutter.embedding.android.FlutterActivity"android:theme="@style/LaunchTheme"android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"android:hardwareAccelerated="true"android:windowSoftInputMode="adjustResize"/>

根据路由跳转到Flutter 页面

        startActivity(FlutterActivity.withNewEngine().initialRoute("/my_route")
//        .withCachedEngine("engine_id").build(currentActivity));

跳转会与 2s的黑屏情况,在MyApp中

public class MyApp extends Application {private FlutterEngine fe ;@Overridepublic void onCreate() {super.onCreate();// 解决原生挑战到 flutter 会有2s 黑屏 的问题fe = new FlutterEngine(this);fe.getDartExecutor().executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault());FlutterEngineCache.getInstance().put("engine_id",fe);}//当application 销毁的时候调用@Overridepublic void onTerminate() {//销毁flutter引擎fe.destroy();super.onTerminate();}
}

在清单文件中注册 MyApp

 <applicationandroid:name="com.qxx.ai_score_manager_flutter.MyApp">
http://www.yayakq.cn/news/636584/

相关文章:

  • mvc5 网站开发之美电影网站建设的核心是
  • 网站外链分析自己可以做类似拓者的网站吗
  • 邱县seo整站排名做网站推广每天加班
  • 玉林建设公司网站教育培训类网站建设模板
  • 美食网站开发与设计文献综述17做网店网站
  • wordpress建站需要学什么意思seo是什么岗位简称
  • 网站建设公司湘潭wordpress search标签页
  • 新素材网站wap页面是什么意思
  • 一般给公司做网站怎么收费中国建设银行个人登录查询入口
  • 唐山做企业网站的公司住房与城乡建设部建设环境工程技术中心网站
  • php简易企业网站源码三网合一网站建设公司
  • 网站建设和运维合同做免费网站有哪些
  • 青岛外贸网站制作公司重庆装修
  • 做网站需要源码吗德阳网站怎么做seo
  • 市场营销产品推广策划方案廊坊seo按天计费
  • wordpress如何建站网站建设和维护pdf
  • 中迅做网站是模板站吗哈尔滨做网站优化
  • 网站怎么做图片转链在手机上用wordpress
  • dw自己做网站需要什么区别如何查看网站是否被百度收录
  • 晚上奖励自己的网站推荐昌邑网页定制
  • 那个网站做苗木西安旅游服务网站建设
  • 夫妻做网站.net手机网站源码下载
  • 中山市网站建设哪家好东莞网站建设纸品包装
  • 2015做微网站多少钱山东网站建设seo
  • 链接网站制作seo查询优化方法
  • 网站更改备案信息吗deals网站建设
  • icp网站授权函工业设计网站哪家好
  • 网站外贸推广wordpress主题代码解读
  • 有网站的源代码怎么生成网站计算机网站建设相关的书籍
  • 城乡互动联盟网站建设哪些网站是vue做的