欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

新版Flutter集成到已有Android項目的實現(xiàn)

FlutterSDK升級后,我們發(fā)現(xiàn)不能按照原來的方式集成到已有Android項目中了,因為沒有了Flutter這個類,通過閱讀源碼我找到了新的使用方式。

成都創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為惠濟企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站制作,惠濟網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

一、創(chuàng)建Flutter Module

在已有Android工程中集成flutter,可以使用AndroidStudio的new Flutter Module實現(xiàn),方便快捷。

新版Flutter集成到已有Android項目的實現(xiàn)

找到FlutterModule,一連串的next操作即可

新版Flutter集成到已有Android項目的實現(xiàn)

創(chuàng)建完成后我們的項目中會多一個叫做flutter的module

新版Flutter集成到已有Android項目的實現(xiàn)

并且在項目的setting.gradle文件中會自動添加如下幾行代碼,

setBinding(new Binding([gradle:this]))
evaluate(
  new File(
    settingsDir,
    'flutter_module/.android/include_flutter.groovy'
  )
)
include ':flutter_module'

最后我們只需在app的build.gradle中引用這個flutter模塊即可

implementation project(path: ':flutter')

二、使用Flutter

兩種使用方式,F(xiàn)lutterView和FlutterFragment。

首先在Application中初始化

public class MVApplication extends Application {
 private static MVApplication instance;
 public static MVApplication getInstance(){
  return instance;
 }
 @Override
 public void onCreate() {
  super.onCreate();
  FlutterMain.Settings settings=new FlutterMain.Settings();
  settings.setLogTag("MyFlutter");
  FlutterMain.startInitialization(this,settings);
  String[] args = {"info", "data"};
  FlutterMain.ensureInitializationComplete(this,args);
  instance=this;
 }
}

1、使用FlutterFragment

新版本的FlutterSDK不再支持已經(jīng)沒有Flutter類,不再支持諸如Flutter.createView()、Flutter.createFragment()等用法,通過閱讀其源碼我們可以找到FlutterFragment的新用法,代碼如下:

public class MyFlutterActivity extends FragmentActivity {
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.flutter_layout);
  //FlutterFragment fragment=new FlutterFragment();
  FlutterFragment fragment=FlutterFragment.withNewEngine().initialRoute("home").build();
  getSupportFragmentManager().beginTransaction().add(R.id.flutter_container, fragment).commit();
 }
}

代碼中FlutterFragment的創(chuàng)建也可以直接使用默認(rèn)的構(gòu)造方法,這樣加載main.dart中的默認(rèn)路由,即''/'',給出的示例代碼中我們通過調(diào)用FlutterFragment.withNewEngine().initialRoute("home").build()創(chuàng)建了新的NewEngineFragmentBuilder來構(gòu)建指定路由的FlutterFragment。

2、使用FlutterView

FlutterView的創(chuàng)建同樣不能使用老版本的方法了,新版本的使用方法代碼如下:

public class MyFlutterActivity extends FragmentActivity {
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.flutter_layout);
  FrameLayout frameLayout=findViewById(R.id.flutter_container);
  ProgressBar progress=findViewById(R.id.progress);
  //創(chuàng)建FlutterView
  FlutterView flutterView=new FlutterView(this);
  //創(chuàng)建FlutterView首幀渲染完成監(jiān)聽
  flutterView.addFirstFrameListener(new FlutterView.FirstFrameListener() {
   @Override
   public void onFirstFrame() {
    //隱藏進度條,顯示FlutterView
    progress.setVisibility(View.GONE);
    frameLayout.setVisibility(View.VISIBLE);
   }
  });
  //創(chuàng)建dart代碼執(zhí)行器
  DartExecutor executor=flutterView.getDartExecutor();
  //執(zhí)行main.dart中的main函數(shù)
  executor.executeDartEntrypoint(
    new DartExecutor.DartEntrypoint(FlutterMain.findAppBundlePath(),
      "main"));
  //將FlutterView添加到布局中
  ViewGroup.LayoutParams layoutParams=new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
    FrameLayout.LayoutParams.MATCH_PARENT);
  frameLayout.addView(flutterView);
 }
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <FrameLayout
  android:id="@+id/flutter_container"
  android:visibility="invisible"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

 </FrameLayout>
 <ProgressBar
  android:id="@+id/progress"
  android:layout_width="45dp"
  android:layout_height="45dp"
  android:layout_centerVertical="true"
  android:layout_centerHorizontal="true"
  android:visibility="visible"
  >
 </ProgressBar>
</RelativeLayout>

效果如下圖:

新版Flutter集成到已有Android項目的實現(xiàn)

到此這篇關(guān)于新版Flutter集成到已有Android項目的實現(xiàn)的文章就介紹到這了,更多相關(guān)Flutter集成到已有Android項目內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

網(wǎng)頁標(biāo)題:新版Flutter集成到已有Android項目的實現(xiàn)
網(wǎng)站路徑:http://aaarwkj.com/article6/ijpoig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、服務(wù)器托管App設(shè)計、面包屑導(dǎo)航、網(wǎng)站營銷、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
精品国产一区二区三区精品日韩| 精品国产乱码一区二区三区四区| 久久久精品免费中文视频| 少妇高潮惨叫久久麻豆传| 伊人久久大香线蕉av色婷婷色| 欧美日韩丝袜一区二区| 日韩欧美一区二区狠狠插| 国产三级精品三级专区| 草草视频在线观看网站| 综合久久—本道中文字幕| 亚洲av成人在线播放| 国产精品福利手机在线观看| 国产欧美日韩亚洲综合在线| 欧美 日韩一区二区在线| 不卡一区二区国产精品| 天堂av在线一区二区三区| 韩国三级网站在线观看视频| 日韩在线中文字幕精品| 夜福利国产视频大屁股| 国产一级二级三级久久| av中文字幕一区二区三区| 青青草原这里只有精品| 日本一区二区三区电影播放| 98精品偷拍视频一区二区三区| 国产精品美女黄色av| 日韩av高清在线免费观看| 天堂av在线免费观看| 蜜臀在线免费观看黄片视频| 欧美一区二区三区高清正版| 欧美日韩av在线一区二区| 日本午夜免费在线视频| a一级成人插少妇的逼| 午夜av一区二区三区| 国内一级黄色片免费观看| 九九精品在线观看视频| 男人天堂在线视频网站| 免费搜索国产男女视频| 亚州精品乱码久久电影| 日韩精品少妇一区二区在线看| 成人性生活三级黄色片| 十八禁无遮挡污污污网站|