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<DashboardSplitView> { 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<DashboardSplitView> { ), 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<EqualSplitView> { 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<EqualSplitView> { 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<EqualSplitView> createState() => _EqualSplitViewState(); +} + +class _EqualSplitViewState extends State<EqualSplitView> { + // 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