공부방/Flutter

How to use flutterActivity and flutterFragmentActivity in android (Flutter 안드로이드에서 flutterActivity 와 flutterFragmentActivity 사용 방법)

soycrab 2023. 3. 6. 15:39

오늘은 Flutter에 Android 프로젝트에서 

FlutterActivity를 사용 하다가  FlutterFragmentActivity를 사용할 경우

놓칠 수 있는 부분에 대해서 잠깐 팁을 설명 하려고해요.

 

1. 먼저 FlutterActivity 사용 방법은 아래와 같아요. 

(플러터 홈페이지 공식 문서 코드에요 )

import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;

public class MainActivity extends FlutterActivity {
    private static final String CHANNEL = "samples.flutter.dev/battery";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(this);

        new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
                new MethodCallHandler() {
                    @Override
                    public void onMethodCall(MethodCall call, Result result) {
                        // Note: this method is invoked on the main thread.
                        // TODO
                    }
                });
    }
}

 

https://flutter-ko.dev/docs/development/platform-integration/platform-channels

 

플랫폼 별 코드 작성

앱에서 커스텀하게 플랫폼 별 코드를 작성하는 방법을 배워보세요.

flutter-ko.dev

 

 

2. 다음은 FlutterFragmentActivity 사용 방법이에요.

FlutterFragmentActivity는 딱히 사용을 할일이 없을수 있지만 

저같은 경우는 Flutter local auth 를 사용하고자 어쩔수 없이 사용했어요.

https://pub.dev/packages/local_auth

import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant


class MainActivity: FlutterFragmentActivity() {

    private val CHANNEL = "com.text"

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        flutterEngine.run {
            GeneratedPluginRegistrant.registerWith(this)
            MethodChannel(this.dartExecutor , CHANNEL).setMethodCallHandler{ call, result ->
               
            }
        }
    }
}

 

혹시 1번과 2번의 차이를 느끼셨나요? 

정답은 초기화 지점이에요. 

FlutterActivity는 onCreate 에서 하고, 

FlutterFragmentActivity는 configureFlutterEngine 에서 초기화를 진행해요. 

혹시나 어떠한 이유로 이 둘중 상속 관계를 바꿔야 한다면 참고하여 코드를 수정 해주세요.

반응형