fix: finalize splitviews

This commit is contained in:
DenserMeerkat
2024-07-11 01:08:16 +05:30
parent 5c5b6d117e
commit 73c249287f
3 changed files with 23 additions and 111 deletions

View File

@ -19,10 +19,8 @@ class DashboardSplitView extends StatefulWidget {
class DashboardSplitViewState extends State<DashboardSplitView> { class DashboardSplitViewState extends State<DashboardSplitView> {
final MultiSplitViewController _controller = MultiSplitViewController( final MultiSplitViewController _controller = MultiSplitViewController(
areas: [ areas: [
Area(id: "sidebar", min: 220, size: 250, max: 300), // Absolute values Area(id: "sidebar", min: 220, size: 250, max: 350),
Area(id: "main", min: 600), Area(id: "main", min: 400),
// Area(id: "sidebar", flex: 0.3, min: 0.25), // Flex values
// Area(id: "main", flex: 0.7, min: 0.7),
], ],
); );

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:multi_split_view/multi_split_view.dart'; import 'package:multi_split_view/multi_split_view.dart';
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
class EqualSplitView extends StatefulWidget { class EqualSplitView extends StatelessWidget {
const EqualSplitView({ const EqualSplitView({
super.key, super.key,
required this.leftWidget, required this.leftWidget,
@ -12,17 +12,17 @@ class EqualSplitView extends StatefulWidget {
final Widget leftWidget; final Widget leftWidget;
final Widget rightWidget; final Widget rightWidget;
@override getMinFractionWidth(double width) {
State<EqualSplitView> createState() => _EqualSplitViewState(); if (width < 900) {
} return 0.9;
} else if (width < 1000) {
class _EqualSplitViewState extends State<EqualSplitView> { return 0.7;
final MultiSplitViewController _controller = MultiSplitViewController( } else if (width < 1200) {
areas: [ return 0.5;
Area(id: "left", min: 0.8), } else {
Area(id: "right", min: 0.95), return 0.4;
], }
); }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -39,18 +39,18 @@ class _EqualSplitViewState extends State<EqualSplitView> {
), ),
child: LayoutBuilder( child: LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
final minWidth = getMinFractionWidth(constraints.maxWidth);
return MultiSplitView( return MultiSplitView(
controller: _controller, controller: MultiSplitViewController(
// MultiSplitViewController( areas: [
// areas: [ Area(id: "left", flex: 1, min: minWidth),
// Area(id: "left", size: constraints.maxWidth / 2, min: 240), Area(id: "right", flex: 1, min: minWidth),
// Area(id: "right", size: constraints.maxWidth / 2, min: 260), ],
// ], ),
// ),
builder: (context, area) { builder: (context, area) {
return switch (area.id) { return switch (area.id) {
"left" => widget.leftWidget, "left" => leftWidget,
"right" => widget.rightWidget, "right" => rightWidget,
_ => Container(), _ => Container(),
}; };
}, },
@ -59,10 +59,4 @@ class _EqualSplitViewState extends State<EqualSplitView> {
), ),
); );
} }
// @override
// void dispose() {
// _controller.dispose();
// super.dispose();
// }
} }

View File

@ -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<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();
// }
}