registrarFor方法找不到

来源:15-6 Flutter Plugin开发指南-Android端实现-2【打通Flutter与Android的任通二脉】

慕粉1156554542

2020-01-14

图片描述
我这个activity默认重写的是configureFlutterEngine方法不是oncreate方法,而且下面的registrarFor方法也提示不存在

写回答

1回答

CrazyCodeBoy

2020-01-15

Flutter 版本不对应导致的:

//将:
package org.devio.fluttertrip;

import android.os.Bundle;

import org.devio.flutter.plugin.asr.AsrPlugin;
import org.devio.flutter.splashscreen.SplashScreen;

import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this,true);
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(this);
        registerSelfPlugin();
    }

    private void registerSelfPlugin() {
        AsrPlugin.registerWith(registrarFor("org.devio.flutter.plugin.asr.AsrPlugin"));
    }
}
//改成
package org.devio.fluttertrip;

import android.os.Bundle;

import org.devio.flutter.plugin.asr.AsrPlugin;
import org.devio.flutter.splashscreen.SplashScreen;

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
    @Override
    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
        //flutter sdk >= v1.12.13+hotfix.5 时使用下面方法注册自定义plugin
        ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
        AsrPlugin.registerWith(shimPluginRegistry.registrarFor("org.devio.flutter.plugin.asr.AsrPlugin"));
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this, true);
        super.onCreate(savedInstanceState);
    }
}

即可。

1
2
慕的地6218116
这种写法也报错:flutter 版本1.17.2 W/FlutterEnginePluginRegistry(23034): Attempted to register plugin (io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry$ShimRegistrarAggregate@ea8d42f) but it was already registered with this FlutterEngine (io.flutter.embedding.engine.FlutterEngine@9e2da3c).
2020-06-06
共2条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程