Сброс содержимого FlutterFragment с помощью Flutter Engine при использовании FlutterFragment - PullRequest
0 голосов
/ 12 июля 2020

Я использую модуль Flutter в своем Android приложении. Я определил глобальный движок Flutter Engine в предварительно нагретом состоянии в своей деятельности и присоединяю его к FlutterFragment по мере необходимости в конкретном сценарии. Ниже показан предварительно нагретый движок, который вызывается после запуска onCreate () в Activity.

void setupFlutterEngine(){
        FlutterEngine flutterEngine=new FlutterEngine(getApplicationContext());

//        Start executing Dart code in the FlutterEngine.
        flutterEngine.getDartExecutor().executeDartEntrypoint(
                DartExecutor.DartEntrypoint.createDefault()
        );

//      Cache the pre-warmed FlutterEngine to be used later by FlutterFragment.
        FlutterEngineCache
                .getInstance()
                .put(FLUTTER_ENGINE_CACHE_TAG, flutterEngine);

    }

Все работает нормально, я создаю экземпляр и добавляю кешированный движок в свой FlutterFragment, как показано ниже:

FlutterEngine flutterEngine=FlutterEngineCache.getInstance().get(FLUTTER_ENGINE_CACHE_TAG);

flutterMethodChannel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), methodChannelTag);

flutterMethodChannel.setMethodCallHandler(new MethodChannel.MethodCallHandler() {
            @Override
            public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
                
            }
        });

        GeneratedPluginRegistrant.registerWith(flutterEngine); 

flutterFragment = FlutterFragment
                .withCachedEngine(FLUTTER_ENGINE_CACHE_TAG)
                .renderMode(RenderMode.surface)
                .transparencyMode(TransparencyMode.opaque)
                .shouldAttachEngineToActivity(true)
                .build();

Я хочу завершить sh текущий вид модуля флаттера, когда фрагмент уничтожен, но не хочу разрушать движок, я хотел бы повторно использовать FlutterEngine и перезапустить его с самого первого экрана под основным () в модуле Flutter при повторном добавлении фрагмента.

...