GtkSettings
GtkSettings fournissent un mécanisme pour partager les paramètres globaux entre les applications sous Linux.
GtkApplication
GtkApplication permet le Flutter primaire Application GTK
instance pour écouter les arguments de ligne de commande des instances d’application distantes et les demandes d’ouverture de fichiers.
REMARQUE: linux/my_application.cc doit être modifié pour que ce package puisse fonctionner. Voir « Mise en route » ci-dessous pour plus de détails. |
---|
gtk-application.webm
Commencer
Appliquez les modifications suivantes à linux/my_application.cc
:
my_application_activate()
: active une fenêtre existante si présente
diff --git a/example/linux/my_application.cc b/example/linux/my_application.cc
index 5cd43c6..94e7215 100644
--- a/linux/my_application.cc
+++ b/linux/my_application.cc
@@ -20,6 +20,12 @@ static void my_application_activate(GApplication* application) {
GtkWindow* window =
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
+ GList* windows = gtk_application_get_windows(GTK_APPLICATION(application));
+ if (windows) {
+ gtk_window_present(GTK_WINDOW(windows->data));
+ return;
+ }
+
// 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).
my_application_local_command_line()
: revenir FALSE
pour permettre au package de gérer la ligne de commande
--- a/linux/my_application.cc
+++ b/linux/my_application.cc
@@ -81,7 +81,7 @@ static gboolean my_application_local_command_line(GApplication* application,
g_application_activate(application);
*exit_status = 0;
- return TRUE;
+ return FALSE;
}
// Implements GObject::dispose.
my_application_new()
: remplacer G_APPLICATION_NON_UNIQUE
avec G_APPLICATION_HANDLES_COMMAND_LINE
et G_APPLICATION_HANDLES_OPEN
drapeaux
--- a/linux/my_application.cc
+++ b/linux/my_application.cc
@@ -101,7 +101,8 @@ static void my_application_class_init(MyApplicationClass* klass) {
static void my_application_init(MyApplication* self) {}
MyApplication* my_application_new() {
- return MY_APPLICATION(g_object_new(my_application_get_type(),
- "application-id", APPLICATION_ID, "flags",
- G_APPLICATION_NON_UNIQUE, nullptr));
+ return MY_APPLICATION(g_object_new(
+ my_application_get_type(), "application-id", APPLICATION_ID, "flags",
+ G_APPLICATION_HANDLES_COMMAND_LINE | G_APPLICATION_HANDLES_OPEN,
+ nullptr));
}
Exemples
Les GtkApplication
widget permet d’écouter les arguments de ligne de commande des instances d’application distantes et les demandes d’ouverture de fichiers depuis l’arborescence du widget.
import 'package:flutter/material.dart';
import 'package:gtk_application/gtk_application.dart';
void main() {
runApp(
MaterialApp(
home: GtkApplication(
onCommandLine: (args) => print('command-line: $args'),
onOpen: (files, hint) => print('open ($hint): $files'),
child: // ...
),
),
);
}
Les GtkApplicationNotifier
L’objet permet d’écouter les arguments de ligne de commande des instances d’application distantes et les demandes d’ouverture de fichier en dehors de l’arborescence du widget.
import 'package:flutter/widgets.dart';
import 'package:gtk_application/gtk_application.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
final notifier = GtkApplicationNotifier();
notifier.addCommandLineListener((args) {
print('command-line: $args');
});
notifier.addOpenListener((files, hint) {
print('open ($hint): $files');
});
// ...
// notifier.dispose();
}
GitHub
Voir Github