package com.cloud.diplomaticquarterapp import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.cloud.diplomaticquarterapp.utils.PlatformBridge import io.flutter.embedding.android.FlutterView import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.dart.DartExecutor import io.flutter.plugin.common.MethodChannel import io.flutter.view.FlutterMain import java.util.ArrayList class FlutterMainActivity : AppCompatActivity() { private lateinit var channel: MethodChannel private var flutterView: FlutterView? = null companion object { private var flutterEngine: FlutterEngine? = null private const val CHANNEL = "HMG-Platform-Bridge" private const val METHOD_CONNECT_WIFI = "connectHMGGuestWifi" private const val METHOD_SHOW_LOADING = "loading" } // to get and check returned intent private fun getArgsFromIntent(intent: Intent): Array? { // Before adding more entries to this list, consider that arbitrary // Android applications can generate intents with extra data and that // there are many security-sensitive args in the binary. val args = ArrayList() if (intent.getBooleanExtra("trace-startup", false)) { args.add("--trace-startup") } if (intent.getBooleanExtra("start-paused", false)) { args.add("--start-paused") } if (intent.getBooleanExtra("enable-dart-profiling", false)) { args.add("--enable-dart-profiling") } if (!args.isEmpty()) { return args.toTypedArray() } return null } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val args = getArgsFromIntent(intent) // check if flutterEngine is null if (flutterEngine == null) { println(args) flutterEngine = FlutterEngine(this, args) flutterEngine!!.dartExecutor.executeDartEntrypoint( // set which of dart methode will be used here DartExecutor.DartEntrypoint(FlutterMain.findAppBundlePath(), "main") ) } setContentView(R.layout.activity_flutter_main) flutterView = findViewById(R.id.flutterView) flutterView!!.attachToFlutterEngine(flutterEngine!!) PlatformBridge(flutterEngine!!.dartExecutor.binaryMessenger, this).create() } override fun onResume() { super.onResume() flutterEngine!!.lifecycleChannel.appIsResumed() } override fun onPause() { super.onPause() flutterEngine!!.lifecycleChannel.appIsInactive() } override fun onStop() { super.onStop() flutterEngine!!.lifecycleChannel.appIsPaused() } override fun onDestroy() { flutterView!!.detachFromFlutterEngine() super.onDestroy() } }