flutter: Platform now tells the overlay about new floating windows

This commit is contained in:
Sergio Martins
2022-09-11 12:49:57 +01:00
parent 4a86415c65
commit f4db14a745
2 changed files with 29 additions and 3 deletions

View File

@@ -10,11 +10,14 @@
*/
import 'package:KDDockWidgets/View_flutter.dart';
import 'package:KDDockWidgets/WindowOverlayWidget.dart';
import 'package:KDDockWidgetsBindings/Bindings.dart' as KDDockWidgetBindings;
import 'ViewFactory_flutter.dart';
class Platform_flutter extends KDDockWidgetBindings.Platform_flutter {
late final WindowOverlayWidget windowOverlayWidget;
@override
String name() {
return "flutter";
@@ -41,12 +44,24 @@ class Platform_flutter extends KDDockWidgetBindings.Platform_flutter {
}
@override
onFloatingWindowCreated(KDDockWidgetBindings.FloatingWindow? fw) {}
onFloatingWindowDestroyed(KDDockWidgetBindings.FloatingWindow? fw) {}
onFloatingWindowCreated(KDDockWidgetBindings.FloatingWindow? fw) {
rebuildWindowOverlay();
}
@override
onFloatingWindowDestroyed(KDDockWidgetBindings.FloatingWindow? fw) {
rebuildWindowOverlay();
}
void rebuildWindowOverlay() {
final state = WindowOverlayWidget.globalKey().currentState;
if (state != null) {
state.onFloatingWindowCountChanged();
}
}
@override
void dumpManagedBacktrace() {
print("Printing!");
print(StackTrace.current);
}
}

View File

@@ -16,6 +16,13 @@ import 'package:flutter/widgets.dart';
/// Since Flutter doesn't support real OS level multi-windows we need
/// to draw the floating windows into an overlay
class WindowOverlayWidget extends StatefulWidget {
// We only have one overlay per application
static GlobalObjectKey<WindowOverlayWidgetState> globalKey() {
return GlobalObjectKey<WindowOverlayWidgetState>("windowOverlayState");
}
WindowOverlayWidget() : super(key: globalKey());
@override
State<StatefulWidget> createState() {
return WindowOverlayWidgetState();
@@ -27,4 +34,8 @@ class WindowOverlayWidgetState extends State<WindowOverlayWidget> {
Widget build(BuildContext context) {
return Stack(children: []);
}
onFloatingWindowCountChanged() {
print("onFloatingWindowCountChanged!");
}
}