mirror of
https://github.com/foss42/apidash.git
synced 2025-05-21 16:26:37 +08:00
fix: finalize splitviews
This commit is contained in:
@ -19,10 +19,8 @@ class DashboardSplitView extends StatefulWidget {
|
||||
class DashboardSplitViewState extends State<DashboardSplitView> {
|
||||
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),
|
||||
],
|
||||
);
|
||||
|
||||
|
@ -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<EqualSplitView> createState() => _EqualSplitViewState();
|
||||
}
|
||||
|
||||
class _EqualSplitViewState extends State<EqualSplitView> {
|
||||
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<EqualSplitView> {
|
||||
),
|
||||
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<EqualSplitView> {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// @override
|
||||
// void dispose() {
|
||||
// _controller.dispose();
|
||||
// super.dispose();
|
||||
// }
|
||||
}
|
||||
|
@ -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();
|
||||
// }
|
||||
}
|
Reference in New Issue
Block a user