flutter: generate more bindings

This commit is contained in:
Sergio Martins
2022-07-31 11:46:48 +01:00
parent ecd05ffbc5
commit b1fcae9bc2
40 changed files with 3181 additions and 1211 deletions

View File

@@ -0,0 +1,67 @@
/*
This file is part of KDDockWidgets.
SPDX-FileCopyrightText: 2019-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Sérgio Martins <sergio.martins@kdab.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
import 'package:KDDockWidgets/View_flutter.dart';
import 'package:flutter/material.dart';
class PositionedWidget extends StatefulWidget {
final View_flutter kddwView;
const PositionedWidget(this.kddwView, {Key? key}) : super(key: key);
@override
State<PositionedWidget> createState() => _PositionedWidgetState(kddwView);
}
class _PositionedWidgetState extends State<PositionedWidget> {
final View_flutter kddwView;
int x = 100;
int y = 100;
int width = 400;
int height = 400;
var childWidgets = <PositionedWidget>[];
_PositionedWidgetState(this.kddwView) {
kddwView.updatePositionCallback = updatePosition;
kddwView.updateSizeCallback = updateSize;
}
void updatePosition(int kddwX, int kddwY) {
final int kddwX = kddwView.x();
final int kddwY = kddwView.y();
setState(() {
this.x = kddwX;
this.y = kddwY;
});
}
void updateSize(int kddwWidth, int kddwHeight) {
setState(() {
height = kddwHeight;
width = kddwWidth;
});
}
@override
Widget build(BuildContext context) {
return Positioned(
height: height * 1.0,
width: width * 1.0,
top: y * 1.0,
left: x * 1.0,
child: Container(
color: Colors.red,
child: Stack(
children: childWidgets,
)));
}
}

View File

@@ -25,4 +25,11 @@ class ViewFactory_flutter extends KDDockWidgetBindings.ViewFactory_flutter {
print("ViewFactory_flutter: Created DropArea");
return da;
}
KDDockWidgetBindings.ClassicIndicatorWindowViewInterface
createClassicIndicatorWindow(
KDDockWidgetBindings.ClassicIndicators? indicators) {
print("ViewFactory_flutter: createClassicIndicatorWindow");
return KDDockWidgetBindings.ClassicIndicatorWindowViewInterface();
}
}

View File

@@ -9,11 +9,36 @@
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
import 'package:KDDockWidgets/PositionedWidget.dart';
import 'package:KDDockWidgetsBindings/Bindings.dart' as KDDockWidgetBindings;
class View_flutter extends KDDockWidgetBindings.View_flutter {
late final PositionedWidget flutterWidget;
Function(int, int)? updatePositionCallback;
Function(int, int)? updateSizeCallback;
int m_x = 100;
int m_y = 100;
int m_width = 400;
int m_height = 400;
View_flutter(KDDockWidgetBindings.Controller? controller, int type,
KDDockWidgetBindings.View? parent,
{int windowFlags = 0})
: super(controller, type, parent, windowFlags: windowFlags);
: super(controller, type, parent, windowFlags: windowFlags) {
flutterWidget = PositionedWidget(this);
}
View_flutter.fromCppPointer(var cppPointer, [var needsAutoDelete = false])
: super.fromCppPointer(cppPointer, needsAutoDelete) {}
setSize_2(int width, int height) {
print("View_flutter::setSize called ${width}x${height}");
if (m_width != width || m_height != height) {
m_height = height;
m_width = width;
if (updateSizeCallback != null) updateSizeCallback!(width, height);
}
}
}

View File

@@ -12,6 +12,10 @@
import 'package:KDDockWidgets/Platform_flutter.dart';
import 'package:KDDockWidgetsBindings/src/Config.dart' as KDDockWidgetBindings;
void f(Function(int x, int y)? f) {
if (f != null) f(0, 0);
}
void main(List<String> args) {
var p = Platform_flutter();