From 86dbcdc583ca5136afc01ee77d3e4f5fd009c75e Mon Sep 17 00:00:00 2001 From: DenserMeerkat Date: Tue, 9 Jul 2024 13:40:27 +0530 Subject: [PATCH 1/3] fix: resizing --- lib/widgets/splitview_dashboard.dart | 8 ++- lib/widgets/splitview_equal.dart | 40 ++++++++------ lib/widgets/splt_cview_temp.dart | 80 ++++++++++++++++++++++++++++ pubspec.lock | 4 +- pubspec.yaml | 2 +- 5 files changed, 114 insertions(+), 20 deletions(-) create mode 100644 lib/widgets/splt_cview_temp.dart diff --git a/lib/widgets/splitview_dashboard.dart b/lib/widgets/splitview_dashboard.dart index ca89e729..938c7b9b 100644 --- a/lib/widgets/splitview_dashboard.dart +++ b/lib/widgets/splitview_dashboard.dart @@ -19,8 +19,10 @@ class DashboardSplitView extends StatefulWidget { class DashboardSplitViewState extends State { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ - Area(id: "sidebar", size: 250, min: 200), - Area(id: "main", min: 0.7), + Area(id: "sidebar", min: 220, size: 250, max: 300), // Absolute values + Area(id: "main", min: 600), + // Area(id: "sidebar", flex: 0.3, min: 0.25), // Flex values + // Area(id: "main", flex: 0.7, min: 0.7), ], ); @@ -44,6 +46,8 @@ class DashboardSplitViewState extends State { ), child: MultiSplitView( controller: _controller, + sizeOverflowPolicy: SizeOverflowPolicy.shrinkFirst, + sizeUnderflowPolicy: SizeUnderflowPolicy.stretchLast, builder: (context, area) { return switch (area.id) { "sidebar" => widget.sidebarWidget, diff --git a/lib/widgets/splitview_equal.dart b/lib/widgets/splitview_equal.dart index 413d42fa..d1d4dc78 100644 --- a/lib/widgets/splitview_equal.dart +++ b/lib/widgets/splitview_equal.dart @@ -19,8 +19,8 @@ class EqualSplitView extends StatefulWidget { class _EqualSplitViewState extends State { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ - Area(id: "left", min: kMinRequestEditorDetailsCardPaneSize), - Area(id: "right", min: kMinRequestEditorDetailsCardPaneSize), + Area(id: "left", min: 0.8), + Area(id: "right", min: 0.95), ], ); @@ -37,22 +37,32 @@ class _EqualSplitViewState extends State { animationEnabled: false, ), ), - child: MultiSplitView( - controller: _controller, - builder: (context, area) { - return switch (area.id) { - "left" => widget.leftWidget, - "right" => widget.rightWidget, - _ => Container(), - }; + child: LayoutBuilder( + builder: (context, constraints) { + return MultiSplitView( + controller: _controller, + // MultiSplitViewController( + // areas: [ + // Area(id: "left", size: constraints.maxWidth / 2, min: 240), + // Area(id: "right", size: constraints.maxWidth / 2, min: 260), + // ], + // ), + builder: (context, area) { + return switch (area.id) { + "left" => widget.leftWidget, + "right" => widget.rightWidget, + _ => Container(), + }; + }, + ); }, ), ); } - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } +// @override +// void dispose() { +// _controller.dispose(); +// super.dispose(); +// } } diff --git a/lib/widgets/splt_cview_temp.dart b/lib/widgets/splt_cview_temp.dart new file mode 100644 index 00000000..90f20877 --- /dev/null +++ b/lib/widgets/splt_cview_temp.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:multi_split_view/multi_split_view.dart'; +import 'package:apidash/consts.dart'; + +class EqualSplitView extends StatefulWidget { + const EqualSplitView({ + super.key, + required this.leftWidget, + required this.rightWidget, + }); + + final Widget leftWidget; + final Widget rightWidget; + + @override + State createState() => _EqualSplitViewState(); +} + +class _EqualSplitViewState extends State { + // final MultiSplitViewController _controller = MultiSplitViewController( + // areas: [ + // Area(id: "left", min: kMinRequestEditorDetailsCardPaneSize), + // Area(id: "right", min: kMinRequestEditorDetailsCardPaneSize), + // ], + // ); + + getMinFractionWidth(double width) { + if (width < 900) { + return 0.9; + } else if (width < 1000) { + return 0.7; + } else if (width < 1200) { + return 0.5; + } else { + return 0.4; + } + } + + @override + Widget build(BuildContext context) { + return MultiSplitViewTheme( + data: MultiSplitViewThemeData( + dividerThickness: 3, + dividerPainter: DividerPainters.background( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + highlightedColor: Theme.of(context).colorScheme.outline.withOpacity( + kHintOpacity, + ), + animationEnabled: false, + ), + ), + child: LayoutBuilder( + builder: (context, constraints) { + final minWidth = getMinFractionWidth(constraints.maxWidth); + return MultiSplitView( + controller: MultiSplitViewController( + areas: [ + Area(id: "left", flex: 1, min: minWidth), + Area(id: "right", flex: 1, min: minWidth), + ], + ), + builder: (context, area) { + return switch (area.id) { + "left" => widget.leftWidget, + "right" => widget.rightWidget, + _ => Container(), + }; + }, + ); + }, + ), + ); + } + +// @override +// void dispose() { +// _controller.dispose(); +// super.dispose(); +// } +} diff --git a/pubspec.lock b/pubspec.lock index 13ee81cf..0e8ed727 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -861,10 +861,10 @@ packages: dependency: "direct main" description: name: multi_split_view - sha256: "2ef6a7ff9d0957bf559075d2703507ea898c8b70e37ff5ac3636298370513b7a" + sha256: "1ee1974d9aae6bdc08e2abdead6066c914cefe4b0c5999cac1a2e4722fcf33ba" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" nested: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 883128b2..3d7b371b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,7 +10,7 @@ environment: dependencies: flutter: sdk: flutter - multi_split_view: ^3.2.1 + multi_split_view: ^3.2.2 url_launcher: ^6.2.5 flutter_riverpod: ^2.5.1 riverpod: ^2.5.1 From 5c5b6d117eb82e454382adbf65f611e9ab00ab11 Mon Sep 17 00:00:00 2001 From: DenserMeerkat Date: Tue, 9 Jul 2024 14:01:51 +0530 Subject: [PATCH 2/3] fix: rename temp file --- lib/widgets/{splt_cview_temp.dart => splitview_equal_temp.dart} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/widgets/{splt_cview_temp.dart => splitview_equal_temp.dart} (100%) diff --git a/lib/widgets/splt_cview_temp.dart b/lib/widgets/splitview_equal_temp.dart similarity index 100% rename from lib/widgets/splt_cview_temp.dart rename to lib/widgets/splitview_equal_temp.dart From 73c249287fa2f4b98e58c6bfbc3be3380a46460e Mon Sep 17 00:00:00 2001 From: DenserMeerkat Date: Thu, 11 Jul 2024 01:08:16 +0530 Subject: [PATCH 3/3] fix: finalize splitviews --- lib/widgets/splitview_dashboard.dart | 6 +- lib/widgets/splitview_equal.dart | 48 +++++++--------- lib/widgets/splitview_equal_temp.dart | 80 --------------------------- 3 files changed, 23 insertions(+), 111 deletions(-) delete mode 100644 lib/widgets/splitview_equal_temp.dart diff --git a/lib/widgets/splitview_dashboard.dart b/lib/widgets/splitview_dashboard.dart index 938c7b9b..ad27204f 100644 --- a/lib/widgets/splitview_dashboard.dart +++ b/lib/widgets/splitview_dashboard.dart @@ -19,10 +19,8 @@ class DashboardSplitView extends StatefulWidget { class DashboardSplitViewState extends State { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ - Area(id: "sidebar", min: 220, size: 250, max: 300), // Absolute values - Area(id: "main", min: 600), - // Area(id: "sidebar", flex: 0.3, min: 0.25), // Flex values - // Area(id: "main", flex: 0.7, min: 0.7), + Area(id: "sidebar", min: 220, size: 250, max: 350), + Area(id: "main", min: 400), ], ); diff --git a/lib/widgets/splitview_equal.dart b/lib/widgets/splitview_equal.dart index d1d4dc78..b8d0309a 100644 --- a/lib/widgets/splitview_equal.dart +++ b/lib/widgets/splitview_equal.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:multi_split_view/multi_split_view.dart'; import 'package:apidash/consts.dart'; -class EqualSplitView extends StatefulWidget { +class EqualSplitView extends StatelessWidget { const EqualSplitView({ super.key, required this.leftWidget, @@ -12,17 +12,17 @@ class EqualSplitView extends StatefulWidget { final Widget leftWidget; final Widget rightWidget; - @override - State createState() => _EqualSplitViewState(); -} - -class _EqualSplitViewState extends State { - final MultiSplitViewController _controller = MultiSplitViewController( - areas: [ - Area(id: "left", min: 0.8), - Area(id: "right", min: 0.95), - ], - ); + getMinFractionWidth(double width) { + if (width < 900) { + return 0.9; + } else if (width < 1000) { + return 0.7; + } else if (width < 1200) { + return 0.5; + } else { + return 0.4; + } + } @override Widget build(BuildContext context) { @@ -39,18 +39,18 @@ class _EqualSplitViewState extends State { ), child: LayoutBuilder( builder: (context, constraints) { + final minWidth = getMinFractionWidth(constraints.maxWidth); return MultiSplitView( - controller: _controller, - // MultiSplitViewController( - // areas: [ - // Area(id: "left", size: constraints.maxWidth / 2, min: 240), - // Area(id: "right", size: constraints.maxWidth / 2, min: 260), - // ], - // ), + controller: MultiSplitViewController( + areas: [ + Area(id: "left", flex: 1, min: minWidth), + Area(id: "right", flex: 1, min: minWidth), + ], + ), builder: (context, area) { return switch (area.id) { - "left" => widget.leftWidget, - "right" => widget.rightWidget, + "left" => leftWidget, + "right" => rightWidget, _ => Container(), }; }, @@ -59,10 +59,4 @@ class _EqualSplitViewState extends State { ), ); } - -// @override -// void dispose() { -// _controller.dispose(); -// super.dispose(); -// } } diff --git a/lib/widgets/splitview_equal_temp.dart b/lib/widgets/splitview_equal_temp.dart deleted file mode 100644 index 90f20877..00000000 --- a/lib/widgets/splitview_equal_temp.dart +++ /dev/null @@ -1,80 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:multi_split_view/multi_split_view.dart'; -import 'package:apidash/consts.dart'; - -class EqualSplitView extends StatefulWidget { - const EqualSplitView({ - super.key, - required this.leftWidget, - required this.rightWidget, - }); - - final Widget leftWidget; - final Widget rightWidget; - - @override - State createState() => _EqualSplitViewState(); -} - -class _EqualSplitViewState extends State { - // final MultiSplitViewController _controller = MultiSplitViewController( - // areas: [ - // Area(id: "left", min: kMinRequestEditorDetailsCardPaneSize), - // Area(id: "right", min: kMinRequestEditorDetailsCardPaneSize), - // ], - // ); - - getMinFractionWidth(double width) { - if (width < 900) { - return 0.9; - } else if (width < 1000) { - return 0.7; - } else if (width < 1200) { - return 0.5; - } else { - return 0.4; - } - } - - @override - Widget build(BuildContext context) { - return MultiSplitViewTheme( - data: MultiSplitViewThemeData( - dividerThickness: 3, - dividerPainter: DividerPainters.background( - color: Theme.of(context).colorScheme.surfaceContainerHighest, - highlightedColor: Theme.of(context).colorScheme.outline.withOpacity( - kHintOpacity, - ), - animationEnabled: false, - ), - ), - child: LayoutBuilder( - builder: (context, constraints) { - final minWidth = getMinFractionWidth(constraints.maxWidth); - return MultiSplitView( - controller: MultiSplitViewController( - areas: [ - Area(id: "left", flex: 1, min: minWidth), - Area(id: "right", flex: 1, min: minWidth), - ], - ), - builder: (context, area) { - return switch (area.id) { - "left" => widget.leftWidget, - "right" => widget.rightWidget, - _ => Container(), - }; - }, - ); - }, - ), - ); - } - -// @override -// void dispose() { -// _controller.dispose(); -// super.dispose(); -// } -}