Android plugin registry (#9715)

This commit is contained in:
Mikkel Nygaard Ravn 2017-05-09 11:43:19 +02:00 committed by GitHub
parent aba6095444
commit 24a3e58cd0
4 changed files with 21 additions and 32 deletions

View File

@ -77,26 +77,20 @@ void _writeFlutterPluginsList(String directory, List<Plugin> plugins) {
const String _androidPluginRegistryTemplate = '''package io.flutter.plugins;
import io.flutter.app.FlutterActivity;
{{#plugins}}
import io.flutter.plugin.common.PluginRegistry;
import {{package}}.{{class}};
{{/plugins}}
/**
* Generated file. Do not edit.
*/
public class PluginRegistry {
public final class GeneratedPluginRegistrant {
public static void registerWith(PluginRegistry registry) {
{{#plugins}}
public {{class}} {{name}};
{{class}}.registerWith(registry.registrarFor("{{package}}.{{class}}"));
{{/plugins}}
public void registerAll(FlutterActivity activity) {
{{#plugins}}
{{name}} = {{class}}.register(activity);
{{/plugins}}
}
}
}
''';
@ -119,7 +113,7 @@ void _writeAndroidPluginRegistry(String directory, List<Plugin> plugins) {
final Directory registryDirectory =
fs.directory(fs.path.join(javaSourcePath, 'io', 'flutter', 'plugins'));
registryDirectory.createSync(recursive: true);
final File registryFile = registryDirectory.childFile('PluginRegistry.java');
final File registryFile = registryDirectory.childFile('GeneratedPluginRegistrant.java');
registryFile.writeAsStringSync(pluginRegistry);
}

View File

@ -6,7 +6,7 @@
.DS_Store
/build
/captures
PluginRegistry.java
GeneratedPluginRegistrant.java
/gradle
/gradlew

View File

@ -1,16 +1,14 @@
package {{androidIdentifier}};
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.PluginRegistry;
import io.flutter.plugin.common.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
PluginRegistry pluginRegistry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pluginRegistry = new PluginRegistry();
pluginRegistry.registerAll(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}

View File

@ -1,24 +1,21 @@
package {{androidIdentifier}};
import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.PluginRegistry.Registrar;
/**
* {{pluginClass}}
*/
public class {{pluginClass}} implements MethodCallHandler {
private FlutterActivity activity;
public static {{pluginClass}} register(FlutterActivity activity) {
return new {{pluginClass}}(activity);
}
private {{pluginClass}}(FlutterActivity activity) {
this.activity = activity;
new MethodChannel(activity.getFlutterView(), "{{projectName}}").setMethodCallHandler(this);
/**
* Plugin registration.
*/
public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "{{projectName}}");
channel.setMethodCallHandler(new {{pluginClass}}());
}
@Override