-
Notifications
You must be signed in to change notification settings - Fork 309
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Linux runner and pubspec.lock for tests
- Loading branch information
Satvik Pendem
authored and
Satvik Pendem
committed
Jan 16, 2025
1 parent
e50a032
commit 7ef6989
Showing
12 changed files
with
550 additions
and
155 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
26 changes: 26 additions & 0 deletions
26
frb_example/flutter_via_create/linux/runner/CMakeLists.txt
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); | ||
} |
130 changes: 130 additions & 0 deletions
130
frb_example/flutter_via_create/linux/runner/my_application.cc
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, "flutter_via_create"); | ||
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, "flutter_via_create"); | ||
} | ||
|
||
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)); | ||
} |
18 changes: 18 additions & 0 deletions
18
frb_example/flutter_via_create/linux/runner/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 |
---|---|---|
@@ -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 |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// This is a basic Flutter widget test. | ||
// | ||
// To perform an interaction with a widget in your test, use the WidgetTester | ||
// utility in the flutter_test package. For example, you can send tap and scroll | ||
// gestures. You can also use WidgetTester to find child widgets in the widget | ||
// tree, read text, and verify that the values of widget properties are correct. | ||
|
||
import 'package:flutter/material.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
import 'package:flutter_via_create/main.dart'; | ||
|
||
void main() { | ||
testWidgets('Counter increments smoke test', (WidgetTester tester) async { | ||
// Build our app and trigger a frame. | ||
await tester.pumpWidget(const MyApp()); | ||
|
||
// Verify that our counter starts at 0. | ||
expect(find.text('0'), findsOneWidget); | ||
expect(find.text('1'), findsNothing); | ||
|
||
// Tap the '+' icon and trigger a frame. | ||
await tester.tap(find.byIcon(Icons.add)); | ||
await tester.pump(); | ||
|
||
// Verify that our counter has incremented. | ||
expect(find.text('0'), findsNothing); | ||
expect(find.text('1'), findsOneWidget); | ||
}); | ||
} |
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
26 changes: 26 additions & 0 deletions
26
frb_example/flutter_via_integrate/linux/runner/CMakeLists.txt
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); | ||
} |
Oops, something went wrong.