Flutter MissingPluginException

2020-07-29  本文已影响0人  戴维王

问题

Unhandled Exception: MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker)

在我们使用第三方提供的Flutter或dart库时(比方说错误信息中的image picker图片选择库)有可能会出现上述错误,错误信息中提示找不到plugin,在 channel(plugins.flutter.io/image_picker) 中找不到 pickImage 方法。

解决办法

Flutter 版本是 pre 1.12 之前的,在MainActivity的 onCreate 方法中加上

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

public class MainActivity extends FlutterActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(this);
    }
}

GeneratedPluginRegistrant是一个SDK生成的类,registerWith方法就是用来注册plugin的。
Flutter 版本已经更新到 pre 1.12 以后的,直接把 MainActivity 的超类 FlutterActivity 替换为 io.flutter.embedding.android.FlutterActivity,这样就无须在调用GeneratedPluginRegistrant.registerWith(flutterEngine)方法了,因为新的 FlutterActivity 类有一个方法

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;

public class MainActivity extends FlutterActivity {

    @Override
    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
    }
}

configureFlutterEngine 通过反射完成了对GeneratedPluginRegistrant.registerWith(flutterEngine)的调用。

上一篇 下一篇

猜你喜欢

热点阅读