| #include "include/{{projectName}}/{{pluginClassSnakeCase}}.h" |
| |
| #include <flutter_linux/flutter_linux.h> |
| #include <gtk/gtk.h> |
| #include <sys/utsname.h> |
| |
| #include <cstring> |
| |
| #include "messages.g.h" |
| #include "{{pluginClassSnakeCase}}_private.h" |
| |
| #define {{pluginClassCapitalSnakeCase}}(obj) \ |
| (G_TYPE_CHECK_INSTANCE_CAST((obj), {{pluginClassSnakeCase}}_get_type(), \ |
| {{pluginClass}})) |
| |
| struct _{{pluginClass}} { |
| GObject parent_instance; |
| }; |
| |
| G_DEFINE_TYPE({{pluginClass}}, {{pluginClassSnakeCase}}, g_object_get_type()) |
| |
| gchar* {{pluginClassSnakeCase}}_get_platform_version() { |
| struct utsname uname_data = {}; |
| uname(&uname_data); |
| return g_strdup_printf("Linux %s", uname_data.version); |
| } |
| |
| static {{projectNameUpperCamelCase}}{{pluginClass}}ApiGetPlatformVersionResponse *handle_get_platform_version(gpointer user_data) { |
| // The plugin instance is unused in this simple example, but more complex |
| // plugins may have plugin state to access here. |
| // {{pluginClass}}* self = {{pluginClassCapitalSnakeCase}}(user_data); |
| |
| g_autofree gchar *version = {{pluginClassSnakeCase}}_get_platform_version(); |
| return {{projectName}}_{{pluginClassSnakeCase}}_api_get_platform_version_response_new(version); |
| } |
| |
| static void {{pluginClassSnakeCase}}_dispose(GObject* object) { |
| G_OBJECT_CLASS({{pluginClassSnakeCase}}_parent_class)->dispose(object); |
| } |
| |
| static void {{pluginClassSnakeCase}}_class_init({{pluginClass}}Class* klass) { |
| G_OBJECT_CLASS(klass)->dispose = {{pluginClassSnakeCase}}_dispose; |
| } |
| |
| static void {{pluginClassSnakeCase}}_init({{pluginClass}}* self) {} |
| |
| void {{pluginClassSnakeCase}}_register_with_registrar(FlPluginRegistrar* registrar) { |
| {{pluginClass}}* plugin = {{pluginClassCapitalSnakeCase}}( |
| g_object_new({{pluginClassSnakeCase}}_get_type(), nullptr)); |
| |
| static {{projectNameUpperCamelCase}}{{pluginClass}}ApiVTable api_vtable = { |
| .get_platform_version = handle_get_platform_version |
| }; |
| {{projectName}}_{{pluginClassSnakeCase}}_api_set_method_handlers( |
| fl_plugin_registrar_get_messenger(registrar), nullptr, |
| &api_vtable, g_object_ref(plugin), g_object_unref); |
| |
| g_object_unref(plugin); |
| } |