引入flutter_boost路由

This commit is contained in:
zu
2021-03-17 00:46:15 +08:00
parent 2cc9cc2233
commit c6431ae8ca
9 changed files with 86 additions and 20 deletions

View File

@@ -291,6 +291,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['oppo-mcssdk-2.0.2.jar'])
// xplan flutter module
implementation project(path: ':flutter')
implementation project(path: ':flutter_boost')
}
repositories {

View File

@@ -1271,10 +1271,17 @@
tools:remove="android:screenOrientation" />
<activity
android:name="io.flutter.embedding.android.FlutterActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:name="com.idlefish.flutterboost.containers.FlutterBoostActivity"
android:theme="@style/Theme.AppCompat"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize" />
android:windowSoftInputMode="adjustResize" >
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/bg_flutter_splash"/>
</activity>
<meta-data android:name="flutterEmbedding"
android:value="2">
</meta-data>
</application>

View File

@@ -23,6 +23,8 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.containers.FlutterBoostFragment;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.api.model.contact.ContactEventListener;
@@ -60,6 +62,7 @@ import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.home.fragment.ContactsListFragment;
import com.yizhuan.erban.home.fragment.HomeFlutterFragment;
import com.yizhuan.erban.home.fragment.HomeFragment;
import com.yizhuan.erban.home.fragment.MeFragment;
import com.yizhuan.erban.home.presenter.MainPresenter;
@@ -238,9 +241,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, FlutterFragment
.withCachedEngine("xplan_engine")
.renderMode(RenderMode.texture)
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, new FlutterBoostFragment
.CachedEngineFragmentBuilder(FlutterBoostFragment.class, FlutterBoost.ENGINE_ID)
.url("/")
.build());
}

View File

@@ -5,6 +5,7 @@ import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
@@ -24,6 +25,9 @@ import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.FlutterBoostDelegate;
import com.idlefish.flutterboost.containers.FlutterBoostActivity;
import com.ishumei.smantifraud.SmAntiFraud;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
@@ -104,9 +108,11 @@ import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.dart.DartExecutor;
@@ -251,13 +257,26 @@ public class XChatApplication extends Application {
}
dealHuaWeiCrash();
FlutterEngine flutterEngine = new FlutterEngine(this);
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
FlutterEngineCache
.getInstance()
.put("xplan_engine", flutterEngine);
FlutterBoost.instance().setup(this, new FlutterBoostDelegate() {
@Override
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
}
@Override
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> arguments) {
Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
.destroyEngineWithActivity(false)
.url(pageName)
.urlParams(arguments)
.build(FlutterBoost.instance().currentActivity());
FlutterBoost.instance().currentActivity().startActivity(intent);
}
}, engine->{
engine.getPlugins();
} );
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
}

View File

@@ -0,0 +1,31 @@
package com.yizhuan.erban.home.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.idlefish.flutterboost.containers.FlutterBoostFragment;
public class HomeFlutterFragment extends FlutterBoostFragment {
private String uniqueId;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
}
}

View File

@@ -5,6 +5,7 @@ import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.idlefish.flutterboost.FlutterBoost;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
@@ -33,7 +34,7 @@ public class LabActivity extends BaseActivity {
findViewById(R.id.rb_h5_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:5503/"));
//vue测试地址
findViewById(R.id.rb_vue_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:8080/"));
findViewById(R.id.rb_flutter_test).setOnClickListener(v -> startActivity(FlutterActivity.withCachedEngine("xplan_engine").build(context)));
findViewById(R.id.rb_flutter_test).setOnClickListener(v -> FlutterBoost.instance().open("/", null));
int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt(Env.KEY_ENVIRONMENT);
//根据ID找到RadioGroup实例
RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/color_1c1b22"
android:gravity="fill" />
</layer-list>

View File

@@ -3,8 +3,6 @@ include ':core'
include ':library'
include ':nim_uikit'
// 添加 flutter module 依赖
setBinding(new Binding([gradle: this]))// new
evaluate(new File( // new
settingsDir.parentFile, // new
'accompany-android/xplan-flutter/.android/include_flutter.groovy' // new
))
setBinding(new Binding([gradle: this]))
evaluate(new File(settingsDir.parentFile,
'accompany-android/xplan-flutter/.android/include_flutter.groovy'))