diff --git a/src/flutter/dart/lib/DockWidget_flutter.dart b/src/flutter/dart/lib/DockWidget_flutter.dart index ed46f65d..22eeab1a 100644 --- a/src/flutter/dart/lib/DockWidget_flutter.dart +++ b/src/flutter/dart/lib/DockWidget_flutter.dart @@ -21,13 +21,8 @@ class DockWidget_flutter extends KDDockWidgetBindings.DockWidget_flutter {int options = 0, int layoutSaverOptions = 0}) : super(uniqueName, options: options, layoutSaverOptions: layoutSaverOptions) { - m_color = Colors.pink; + initMixin(this, color: Colors.pink, debugName: "DockWidget"); m_fillsParent = true; - kddwView = this; - final ffi.Pointer ptr = thisCpp.cast(); - widgetKey = GlobalObjectKey(ptr.address); - flutterWidget = PositionedWidget(this, key: widgetKey); - debugName = "DockWidget"; print("DockWidget_flutter CTOR"); } } diff --git a/src/flutter/dart/lib/Group_flutter.dart b/src/flutter/dart/lib/Group_flutter.dart index 3d78dcad..429fb62f 100644 --- a/src/flutter/dart/lib/Group_flutter.dart +++ b/src/flutter/dart/lib/Group_flutter.dart @@ -19,12 +19,8 @@ class Group_flutter extends KDDockWidgetBindings.Group_flutter with View_mixin { Group_flutter( KDDockWidgetBindings.Group? group, KDDockWidgetBindings.View? parent) : super(group, parent: parent) { - m_color = Colors.greenAccent; - kddwView = this; - final ffi.Pointer ptr = thisCpp.cast(); - widgetKey = GlobalObjectKey(ptr.address); - flutterWidget = PositionedWidget(this, key: widgetKey); - debugName = "group"; + initMixin(this, color: Colors.greenAccent, debugName: "Group"); + print("Group_flutter CTOR"); } } diff --git a/src/flutter/dart/lib/View_flutter.dart b/src/flutter/dart/lib/View_flutter.dart index fc9cfafd..9daa5161 100644 --- a/src/flutter/dart/lib/View_flutter.dart +++ b/src/flutter/dart/lib/View_flutter.dart @@ -20,23 +20,11 @@ class View_flutter extends KDDockWidgetBindings.View_flutter with View_mixin { KDDockWidgetBindings.View? parent, {int windowFlags = 0}) : super(controller, type, parent, windowFlags: windowFlags) { - initMixin(); + initMixin(this); } View_flutter.fromCppPointer(var cppPointer, [var needsAutoDelete = false]) : super.fromCppPointer(cppPointer, needsAutoDelete) { - initMixin(); - } - - void initMixin() { - // The key is the C++ KDDockWidget pointer, which is stable and unique - final ffi.Pointer ptr = thisCpp.cast(); - widgetKey = GlobalObjectKey(ptr.address); - kddwView = this; - flutterWidget = createFlutterWidget(); - } - - Widget createFlutterWidget() { - return PositionedWidget(this, key: widgetKey); + initMixin(this); } } diff --git a/src/flutter/dart/lib/View_mixin.dart b/src/flutter/dart/lib/View_mixin.dart index b8c52a05..a7c12248 100644 --- a/src/flutter/dart/lib/View_mixin.dart +++ b/src/flutter/dart/lib/View_mixin.dart @@ -9,14 +9,11 @@ Contact KDAB at for commercial licensing options. */ +import 'dart:ffi' as ffi; import 'package:KDDockWidgets/PositionedWidget.dart'; import 'package:KDDockWidgetsBindings/Bindings.dart' as KDDockWidgetBindings; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'Group_flutter.dart'; -import 'View_flutter.dart'; - class View_mixin { late final Widget flutterWidget; late final GlobalObjectKey widgetKey; @@ -35,6 +32,18 @@ class View_mixin { var childWidgets = []; + void initMixin(var kddwView, {var color = Colors.red, var debugName = ""}) { + this.kddwView = kddwView; + m_color = color; + this.debugName = debugName; + + // The key is the C++ View pointer, which is stable and unique + final ffi.Pointer ptr = kddwView.thisCpp.cast(); + widgetKey = GlobalObjectKey(ptr.address); + + flutterWidget = createFlutterWidget(); + } + setSize_2(int width, int height) { // print( // "View_mixin::setSize called ${width}x${height} ; old=${m_width}x${height}"); @@ -128,4 +137,8 @@ class View_mixin { } } } + + Widget createFlutterWidget() { + return PositionedWidget(this, key: widgetKey); + } }