1+ import 'dart:ui' ;
2+
13import 'package:flutter/material.dart' ;
2- import 'package:multi_window_ref_app/app/window_metadata_content .dart' ;
4+ import 'package:multi_window_ref_app/app/window_controller_render .dart' ;
35
46import 'window_settings.dart' ;
57import 'window_settings_dialog.dart' ;
@@ -47,6 +49,7 @@ class MainWindow extends StatefulWidget {
4749
4850class _MainWindowState extends State <MainWindow > {
4951 final _WindowManagerModel _windowManagerModel = _WindowManagerModel ();
52+ final WindowSettings _settings = WindowSettings ();
5053
5154 @override
5255 Widget build (BuildContext context) {
@@ -75,7 +78,8 @@ class _MainWindowState extends State<MainWindow> {
7578 builder: (BuildContext context, Widget ? child) {
7679 return _WindowCreatorCard (
7780 selectedWindow: _windowManagerModel.selected,
78- windowManagerModel: _windowManagerModel);
81+ windowManagerModel: _windowManagerModel,
82+ windowSettings: _settings);
7983 })
8084 ],
8185 ),
@@ -88,22 +92,31 @@ class _MainWindowState extends State<MainWindow> {
8892 view: ListenableBuilder (
8993 listenable: _windowManagerModel,
9094 builder: (BuildContext context, Widget ? widget) {
91- return _ViewCollection (windowManagerModel: _windowManagerModel);
95+ return _ViewCollection (
96+ windowManagerModel: _windowManagerModel,
97+ windowSettings: _settings);
9298 }),
9399 child: widget);
94100 }
95101}
96102
97103class _ViewCollection extends StatelessWidget {
98- _ViewCollection ({required this .windowManagerModel});
104+ _ViewCollection (
105+ {required this .windowManagerModel, required this .windowSettings});
99106
100- _WindowManagerModel windowManagerModel;
107+ final _WindowManagerModel windowManagerModel;
108+ final WindowSettings windowSettings;
101109
102110 @override
103111 Widget build (BuildContext context) {
104112 final List <Widget > childViews = < Widget > [];
105- for (final WindowController childWindow in windowManagerModel.windows) {
106- childViews.add (WindowMetadataContent (controller: childWindow));
113+ for (final WindowController controller in windowManagerModel.windows) {
114+ childViews.add (WindowControllerRender (
115+ controller: controller,
116+ onDestroyed: () {
117+ windowManagerModel.remove (controller);
118+ },
119+ windowSettings: windowSettings));
107120 }
108121
109122 return ViewCollection (views: childViews);
@@ -211,19 +224,15 @@ class _ActiveWindowsTable extends StatelessWidget {
211224 }
212225}
213226
214- class _WindowCreatorCard extends StatefulWidget {
215- const _WindowCreatorCard (
216- {required this .selectedWindow, required this .windowManagerModel});
227+ class _WindowCreatorCard extends StatelessWidget {
228+ _WindowCreatorCard (
229+ {required this .selectedWindow,
230+ required this .windowManagerModel,
231+ required this .windowSettings});
217232
218233 final WindowController ? selectedWindow;
219234 final _WindowManagerModel windowManagerModel;
220-
221- @override
222- State <StatefulWidget > createState () => _WindowCreatorCardState ();
223- }
224-
225- class _WindowCreatorCardState extends State <_WindowCreatorCard > {
226- WindowSettings _settings = WindowSettings ();
235+ final WindowSettings windowSettings;
227236
228237 @override
229238 Widget build (BuildContext context) {
@@ -249,7 +258,7 @@ class _WindowCreatorCardState extends State<_WindowCreatorCard> {
249258 children: [
250259 OutlinedButton (
251260 onPressed: () async {
252- widget. windowManagerModel.add (RegularWindowController ());
261+ windowManagerModel.add (RegularWindowController ());
253262 },
254263 child: const Text ('Regular' ),
255264 ),
@@ -259,13 +268,7 @@ class _WindowCreatorCardState extends State<_WindowCreatorCard> {
259268 child: TextButton (
260269 child: const Text ('SETTINGS' ),
261270 onPressed: () {
262- windowSettingsDialog (context, _settings).then (
263- (WindowSettings ? settings) {
264- if (settings != null ) {
265- _settings = settings;
266- }
267- },
268- );
271+ windowSettingsDialog (context, windowSettings);
269272 },
270273 ),
271274 ),
0 commit comments