欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Flutter与Android原生的交互实例讲解

程序员文章站 2022-10-31 15:13:43
flutter发布preview版本后热度持续上升,但是仍然有很多不足之处,所有前期还是采用与原生结合的混合开发,那就需要了解flutter与原生的交互的一些方法。 原生启动flutter acti...

flutter发布preview版本后热度持续上升,但是仍然有很多不足之处,所有前期还是采用与原生结合的混合开发,那就需要了解flutter与原生的交互的一些方法。

原生启动flutter activity

新建flutter 项目默认启动mainactivity,继承自flutteractivity,在androidmanifest中可以看到intent-filter的配置。

思路:新建一个android原生的activity(splashactivity),增加一个按钮,启动flutter的mainactivity。

原生activity,oncreate代码

  @override
  protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_splash);
 findviewbyid(r.id.go_flutter).setonclicklistener(new onclicklistener() {
@override
public void onclick(view v) {
  intent intent = new intent(splashactivity.this, mainactivity.class);
  splashactivity.this.startactivity(intent);
}
 });
 }

配置androidmanifest:将mainactivity的intent-fliter移到splashactivity,这样默认就启动原生的activity,有原生的activity点击启动flutter的mainactivity。

 
 

  
  

 

flutter 启动原生activity

flutter与原生的交互主要通过插件的方式。

思路:在mainactivity中注册插件,在widget中增加一个button,点击后启动原生的activity。

插件名为demo.plugin,处理方法interaction启动原生activity,其他不处理。

 // 自定义插件
 string channel = "demo.plugin";
 new methodchannel(getflutterview(), channel).setmethodcallhandler(new methodcallhandler() {
@override
public void onmethodcall(methodcall call, result result) {
  if (call.method.equals("interaction")) {
 intent intent = new intent(mainactivity.this, splashactivity.class);
 mainactivity.this.startactivity(intent);
 result.success("success");
  } else {
 result.notimplemented();
  }
}
 });

预览图:

Flutter与Android原生的交互实例讲解