1+ package com.fmt.github.tasks
2+
3+ import android.content.Context
4+ import android.content.Intent
5+ import com.fmt.github.config.Configs
6+ import com.fmt.github.mApplication
7+ import com.fmt.github.repos.activity.ReposDetailActivity
8+ import com.rousetime.android_startup.AndroidStartup
9+ import com.idlefish.flutterboost.FlutterBoost;
10+ import com.idlefish.flutterboost.FlutterBoostDelegate;
11+ import com.idlefish.flutterboost.FlutterBoostRouteOptions;
12+ import com.idlefish.flutterboost.containers.FlutterBoostActivity;
13+ import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
14+ import io.flutter.embedding.engine.FlutterEngine
15+
16+ class InitFlutterBoostTask : AndroidStartup <Unit >() {
17+
18+ override fun callCreateOnMainThread (): Boolean = true
19+
20+ override fun waitOnMainThread (): Boolean = true
21+
22+ override fun create (context : Context ) {
23+ FlutterBoost .instance().setup(mApplication, object : FlutterBoostDelegate {
24+ override fun pushNativeRoute (options : FlutterBoostRouteOptions ) {
25+ if (" reposDetail" == options.pageName()) {
26+ val intent = Intent (
27+ FlutterBoost .instance().currentActivity(),
28+ ReposDetailActivity ::class .java
29+ ).apply {
30+ putExtra(
31+ ReposDetailActivity .WEB_URL ,
32+ " ${Configs .GITHUB_BASE_URL }${options.arguments()[ReposDetailActivity .WEB_URL ]} "
33+ )
34+ putExtra(
35+ ReposDetailActivity .REPO ,
36+ options.arguments()[ReposDetailActivity .REPO ].toString()
37+ )
38+ putExtra(
39+ ReposDetailActivity .OWNER ,
40+ options.arguments()[ReposDetailActivity .OWNER ].toString()
41+ )
42+ }
43+ FlutterBoost .instance().currentActivity()
44+ .startActivityForResult(intent, options.requestCode())
45+ }
46+ }
47+
48+ override fun pushFlutterRoute (options : FlutterBoostRouteOptions ) {
49+ val intent: Intent =
50+ FlutterBoostActivity .CachedEngineIntentBuilder (FlutterBoostActivity ::class .java)
51+ .backgroundMode(FlutterActivityLaunchConfigs .BackgroundMode .transparent)
52+ .destroyEngineWithActivity(false )
53+ .uniqueId(options.uniqueId())
54+ .url(options.pageName())
55+ .urlParams(options.arguments())
56+ .build(FlutterBoost .instance().currentActivity())
57+ FlutterBoost .instance().currentActivity().startActivity(intent)
58+ }
59+ }) { engine: FlutterEngine ->
60+
61+ }
62+ }
63+ }
0 commit comments