diff --git a/lib/widgets/splitview_dashboard.dart b/lib/widgets/splitview_dashboard.dart index 6e9c8bdd..2929c11b 100644 --- a/lib/widgets/splitview_dashboard.dart +++ b/lib/widgets/splitview_dashboard.dart @@ -20,7 +20,7 @@ class DashboardSplitViewState extends State { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ Area(id: "sidebar", size: 350, min: 300), - Area(id: "main", min: 0.7), + Area(id: "main", min: 400), ], ); @@ -44,6 +44,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..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: 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) { @@ -37,22 +37,26 @@ 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) { + 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" => leftWidget, + "right" => rightWidget, + _ => Container(), + }; + }, + ); }, ), ); } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } } diff --git a/pubspec.lock b/pubspec.lock index 23333fe1..e7790256 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -885,10 +885,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 4801ae46..f8765bbb 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 diff --git a/test/utils/convert_utils_test.dart b/test/utils/convert_utils_test.dart index a912b57a..e996c319 100644 --- a/test/utils/convert_utils_test.dart +++ b/test/utils/convert_utils_test.dart @@ -282,38 +282,4 @@ Easily manipulate and play around with request inputs like headers, query parame expect(audioPosition(dur4), dur4Expected); }); }); - - group('httpVerbFromString', () { - test('returns HTTPVerb.get for "GET"', () { - expect(httpVerbFromString("GET"), HTTPVerb.get); - }); - - test('returns HTTPVerb.post for "POST"', () { - expect(httpVerbFromString("POST"), HTTPVerb.post); - }); - - test('returns HTTPVerb.put for "PUT"', () { - expect(httpVerbFromString("PUT"), HTTPVerb.put); - }); - - test('returns HTTPVerb.delete for "DELETE"', () { - expect(httpVerbFromString("DELETE"), HTTPVerb.delete); - }); - - test('returns HTTPVerb.head for "HEAD"', () { - expect(httpVerbFromString("HEAD"), HTTPVerb.head); - }); - - test('returns HTTPVerb.patch for "PATCH"', () { - expect(httpVerbFromString("PATCH"), HTTPVerb.patch); - }); - - test('returns null for invalid verb', () { - expect(httpVerbFromString("INVALID"), isNull); - }); - - test('returns null for empty string', () { - expect(httpVerbFromString(""), isNull); - }); - }); }