Flutter Plugin里获取Context
2022-04-02 本文已影响0人
禄子_c79b
两种方式:
1通过插件类实现ActivityAware
2PluginRegistry.Registrar.context
第一种:
.将我们的插件类实现ActivityAware
public class TestPlugin implements FlutterPlugin, ActivityAware,MethodCallHandler { ...
}
实现ActivityAware的方法
public class TestPlugin implements FlutterPlugin, ActivityAware,MethodCallHandler {
private Activity activity;
@Override
public void onAttachedToActivity(ActivityPluginBinding binding) {
activity = binding.getActivity();
}
@Override
public void onDetachedFromActivityForConfigChanges() {
this.onDetachedFromActivity();
}
@Override
public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
this.onAttachedToActivity(binding);
}
@Override
public void onDetachedFromActivity() {
activity = null;
}
}
通过代码activity.getApplicationContext()即可获取到当前context了
第二种:
写一个构造方法
public class TestPlugin implements FlutterPlugin,MethodCallHandler { ...
private final Context context;
public TestPlugin (PluginRegistry.Registrar registrar) {
this.context = registrar.context();
}
}
GeneratedPluginRegistrant registerWith里添加插件传值
@Keep
public final class GeneratedPluginRegistrant {
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.FlutterPlugin3Plugin( new ShimPluginRegistry(flutterEngine).registrarFor("TestPlugin ")));
} catch(Exception e) {
Log.e(TAG, "Error registering plugin flutter_boost, com.idlefish.flutterboost.FlutterBoostPlugin", e);
}
}
}