Un paquet qui ajoute certaines fonctionnalités de fenêtrage gtk4 manquantes à flutter. Fonctionne pour Linux mais peut également fonctionner pour MacOS et Windows. Avant de:
Fonctionnalités
- Barre d’en-tête
Commencer
Pour démarrer sur Linux : modifiez le fichier linux/my_application.cc comme suit
Nous devons d’abord supprimer le title_bar natif. Alors commentez simplement le code ci-dessous
//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, "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, "example");
// }
Déplacez ensuite les deux lignes à la fin de la classe my_application_activate à partir de :
gtk_window_set_default_size(window, 1280, 720);
//gtk_widget_show(GTK_WIDGET(window));
FlView* view = fl_view_new(project);
//gtk_widget_show(GTK_WIDGET(view));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
à:
static void my_application_activate(GApplication* application) {
...
gtk_widget_show(GTK_WIDGET(window));
gtk_widget_show(GTK_WIDGET(view));
}
Usage
import 'package:gtk_window/gtk_window.dart';
Scaffold(
appBar: GTKHeaderBar
title: Text('example title'),
),
)
Limites actuelles
- Le système d’exploitation ne traite pas la barre d’application de manière native, elle ne peut donc pas être masquée dans le cas de l’utilisation d’un gestionnaire de fenêtres.
Pourquoi ne pas simplement utiliser la barre d’en-tête native fournie par Flutter ?
En raison du large éventail de plates-formes prises en charge par l’équipe Flutter, ils doivent regrouper les fonctionnalités pour travailler sur autant de plates-formes que possible afin de simplifier le développement. Ils ont donc fait en sorte que la version de la barre d’application GTK ressemble à celle de MacOS et Windows, car ils survolent simplement le contenu sans avoir autant de contrôle sur eux. Dans GTK, la barre d’application peut contenir de nombreux widgets, sur lesquels vous n’auriez aucun contrôle sans ce package.
Clause de non-responsabilité
Je ne maîtrise pas très bien GTK lui-même et toute suggestion est la bienvenue.
Plugins utilisés
En fait, je n’ai écrit aucun code spécifique à la plate-forme pour ce package. Je me suis appuyé sur le travail incroyable effectué par les responsables de handy_window et window_manager.
GitHub
Voir Github