-
-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: updated example template to Flutter 3.27 (#67)
- Loading branch information
1 parent
9c58a59
commit 9f67bb3
Showing
20 changed files
with
291 additions
and
127 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError | ||
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError | ||
android.useAndroidX=true | ||
android.enableJetifier=true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
cmake_minimum_required(VERSION 3.13) | ||
project(runner LANGUAGES CXX) | ||
|
||
# Define the application target. To change its name, change BINARY_NAME in the | ||
# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer | ||
# work. | ||
# | ||
# Any new source files that you add to the application should be added here. | ||
add_executable(${BINARY_NAME} | ||
"main.cc" | ||
"my_application.cc" | ||
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" | ||
) | ||
|
||
# Apply the standard set of build settings. This can be removed for applications | ||
# that need different build settings. | ||
apply_standard_settings(${BINARY_NAME}) | ||
|
||
# Add preprocessor definitions for the application ID. | ||
add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") | ||
|
||
# Add dependency libraries. Add any application-specific dependencies here. | ||
target_link_libraries(${BINARY_NAME} PRIVATE flutter) | ||
target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) | ||
|
||
target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#include "my_application.h" | ||
|
||
int main(int argc, char** argv) { | ||
g_autoptr(MyApplication) app = my_application_new(); | ||
return g_application_run(G_APPLICATION(app), argc, argv); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
#include "my_application.h" | ||
|
||
#include <flutter_linux/flutter_linux.h> | ||
#ifdef GDK_WINDOWING_X11 | ||
#include <gdk/gdkx.h> | ||
#endif | ||
|
||
#include "flutter/generated_plugin_registrant.h" | ||
|
||
struct _MyApplication { | ||
GtkApplication parent_instance; | ||
char** dart_entrypoint_arguments; | ||
}; | ||
|
||
G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) | ||
|
||
// Implements GApplication::activate. | ||
static void my_application_activate(GApplication* application) { | ||
MyApplication* self = MY_APPLICATION(application); | ||
GtkWindow* window = | ||
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); | ||
|
||
// Use a header bar when running in GNOME as this is the common style used | ||
// by applications and is the setup most users will be using (e.g. Ubuntu | ||
// desktop). | ||
// If running on X and not using GNOME then just use a traditional title bar | ||
// in case the window manager does more exotic layout, e.g. tiling. | ||
// If running on Wayland assume the header bar will work (may need changing | ||
// if future cases occur). | ||
gboolean use_header_bar = TRUE; | ||
#ifdef GDK_WINDOWING_X11 | ||
GdkScreen* screen = gtk_window_get_screen(window); | ||
if (GDK_IS_X11_SCREEN(screen)) { | ||
const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); | ||
if (g_strcmp0(wm_name, "GNOME Shell") != 0) { | ||
use_header_bar = FALSE; | ||
} | ||
} | ||
#endif | ||
if (use_header_bar) { | ||
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); | ||
gtk_widget_show(GTK_WIDGET(header_bar)); | ||
gtk_header_bar_set_title(header_bar, "package_rename_example"); | ||
gtk_header_bar_set_show_close_button(header_bar, TRUE); | ||
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); | ||
} else { | ||
gtk_window_set_title(window, "package_rename_example"); | ||
} | ||
|
||
gtk_window_set_default_size(window, 1280, 720); | ||
gtk_widget_show(GTK_WIDGET(window)); | ||
|
||
g_autoptr(FlDartProject) project = fl_dart_project_new(); | ||
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); | ||
|
||
FlView* view = fl_view_new(project); | ||
gtk_widget_show(GTK_WIDGET(view)); | ||
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); | ||
|
||
fl_register_plugins(FL_PLUGIN_REGISTRY(view)); | ||
|
||
gtk_widget_grab_focus(GTK_WIDGET(view)); | ||
} | ||
|
||
// Implements GApplication::local_command_line. | ||
static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { | ||
MyApplication* self = MY_APPLICATION(application); | ||
// Strip out the first argument as it is the binary name. | ||
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); | ||
|
||
g_autoptr(GError) error = nullptr; | ||
if (!g_application_register(application, nullptr, &error)) { | ||
g_warning("Failed to register: %s", error->message); | ||
*exit_status = 1; | ||
return TRUE; | ||
} | ||
|
||
g_application_activate(application); | ||
*exit_status = 0; | ||
|
||
return TRUE; | ||
} | ||
|
||
// Implements GApplication::startup. | ||
static void my_application_startup(GApplication* application) { | ||
//MyApplication* self = MY_APPLICATION(object); | ||
|
||
// Perform any actions required at application startup. | ||
|
||
G_APPLICATION_CLASS(my_application_parent_class)->startup(application); | ||
} | ||
|
||
// Implements GApplication::shutdown. | ||
static void my_application_shutdown(GApplication* application) { | ||
//MyApplication* self = MY_APPLICATION(object); | ||
|
||
// Perform any actions required at application shutdown. | ||
|
||
G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); | ||
} | ||
|
||
// Implements GObject::dispose. | ||
static void my_application_dispose(GObject* object) { | ||
MyApplication* self = MY_APPLICATION(object); | ||
g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); | ||
G_OBJECT_CLASS(my_application_parent_class)->dispose(object); | ||
} | ||
|
||
static void my_application_class_init(MyApplicationClass* klass) { | ||
G_APPLICATION_CLASS(klass)->activate = my_application_activate; | ||
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; | ||
G_APPLICATION_CLASS(klass)->startup = my_application_startup; | ||
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; | ||
G_OBJECT_CLASS(klass)->dispose = my_application_dispose; | ||
} | ||
|
||
static void my_application_init(MyApplication* self) {} | ||
|
||
MyApplication* my_application_new() { | ||
// Set the program name to the application ID, which helps various systems | ||
// like GTK and desktop environments map this running application to its | ||
// corresponding .desktop file. This ensures better integration by allowing | ||
// the application to be recognized beyond its binary name. | ||
g_set_prgname(APPLICATION_ID); | ||
|
||
return MY_APPLICATION(g_object_new(my_application_get_type(), | ||
"application-id", APPLICATION_ID, | ||
"flags", G_APPLICATION_NON_UNIQUE, | ||
nullptr)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#ifndef FLUTTER_MY_APPLICATION_H_ | ||
#define FLUTTER_MY_APPLICATION_H_ | ||
|
||
#include <gtk/gtk.h> | ||
|
||
G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, | ||
GtkApplication) | ||
|
||
/** | ||
* my_application_new: | ||
* | ||
* Creates a new Flutter-based application. | ||
* | ||
* Returns: a new #MyApplication. | ||
*/ | ||
MyApplication* my_application_new(); | ||
|
||
#endif // FLUTTER_MY_APPLICATION_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,13 @@ | ||
import Cocoa | ||
import FlutterMacOS | ||
|
||
@NSApplicationMain | ||
@main | ||
class AppDelegate: FlutterAppDelegate { | ||
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { | ||
return true | ||
} | ||
|
||
override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { | ||
return true | ||
} | ||
} |
Oops, something went wrong.