Files
apidash/lib/widgets/splitview_equal.dart
2024-07-11 01:08:16 +05:30

63 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:multi_split_view/multi_split_view.dart';
import 'package:apidash/consts.dart';
class EqualSplitView extends StatelessWidget {
const EqualSplitView({
super.key,
required this.leftWidget,
required this.rightWidget,
});
final Widget leftWidget;
final Widget rightWidget;
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" => leftWidget,
"right" => rightWidget,
_ => Container(),
};
},
);
},
),
);
}
}