1
- // ignore_for_file: avoid_multiple_declarations_per_line
2
1
import 'dart:async' ;
3
2
import 'dart:math' ;
4
3
5
4
import 'package:flutter/scheduler.dart' ;
6
5
import 'package:flutter/widgets.dart' ;
6
+ import 'package:mdi/_extensions/build_context_ext.dart' ;
7
7
import 'package:mdi/_prefs.dart' ;
8
8
import 'package:mdi/window/title_bar.dart' ;
9
9
@@ -19,11 +19,7 @@ class Window extends StatefulWidget {
19
19
required this .width,
20
20
required this .height,
21
21
required this .isFixedSize,
22
- required double screenWidth,
23
- required double screenHeight,
24
- }) : availableWidth = screenWidth + windowOuterPaddingTimes2,
25
- availableHeight = screenHeight - dockHeight + windowOuterPaddingTimes2,
26
- super (key: key);
22
+ }) : super (key: key);
27
23
28
24
final String title;
29
25
final Widget app;
@@ -35,8 +31,6 @@ class Window extends StatefulWidget {
35
31
final double ? width;
36
32
final double ? height;
37
33
final bool isFixedSize;
38
- final double availableWidth;
39
- final double availableHeight;
40
34
41
35
@override
42
36
State <Window > createState () => _WindowState ();
@@ -53,6 +47,14 @@ class _WindowState extends State<Window> {
53
47
54
48
late final StreamSubscription <void > _unHideWindowSubscription;
55
49
50
+ (double , double ) get _availableSize {
51
+ final screenSize = context.screenSize;
52
+ return (
53
+ screenSize.width + windowOuterPaddingTimes2,
54
+ screenSize.height - dockHeight + windowOuterPaddingTimes2,
55
+ );
56
+ }
57
+
56
58
@override
57
59
void initState () {
58
60
super .initState ();
@@ -62,13 +64,14 @@ class _WindowState extends State<Window> {
62
64
.listen ((_) => _toggleMinimize ());
63
65
64
66
SchedulerBinding .instance.addPostFrameCallback ((_) {
67
+ final (availableWidth, availableHeight) = _availableSize;
65
68
setState (() {
66
- _width = widget.width ?? widget. availableWidth * 0.6 ;
67
- _height = widget.height ?? widget. availableHeight * 0.6 ;
69
+ _width = widget.width ?? availableWidth * 0.6 ;
70
+ _height = widget.height ?? availableHeight * 0.6 ;
68
71
_checkMinSize ();
69
72
70
- _dx = _random.nextDouble () * (widget. availableWidth - _width);
71
- _dy = _random.nextDouble () * (widget. availableHeight - _height);
73
+ _dx = _random.nextDouble () * (availableWidth - _width);
74
+ _dy = _random.nextDouble () * (availableHeight - _height);
72
75
});
73
76
});
74
77
}
@@ -133,8 +136,9 @@ class _WindowState extends State<Window> {
133
136
_dxLast = _dx;
134
137
_dyLast = _dy;
135
138
136
- _width = widget.availableWidth;
137
- _height = widget.availableHeight;
139
+ final (availableWidth, availableHeight) = _availableSize;
140
+ _width = availableWidth;
141
+ _height = availableHeight;
138
142
_dx = _dy = - windowOuterPadding;
139
143
}
140
144
});
0 commit comments