build method
- @override
- BuildContext context,
- ViewsModel model
override
Builds the UI according to the state in model.
Implementation
@override
Widget build(BuildContext context, ViewsModel model) => Padding(
padding: const EdgeInsets.all(8),
child: switch (model.views.length) {
1 => Column(children: [Expanded(child: model.children[0].child)]),
2 => ResizableContainer(
key: ValueKey("1-${models.settings.dashboard.splitMode.name}"),
direction: switch (models.settings.dashboard.splitMode) {
SplitMode.horizontal => Axis.vertical,
SplitMode.vertical => Axis.horizontal,
},
divider: divider,
controller: switch (models.settings.dashboard.splitMode) {
SplitMode.horizontal => model.verticalController1,
SplitMode.vertical => model.horizontalController1,
},
children: model.children.sublist(0, 2),
),
3 || 4 => ResizableContainer(
key: const ValueKey(2),
controller: model.verticalController1,
direction: Axis.vertical,
divider: divider,
children: [
nestChild(
controller: model.horizontalController1,
children: model.children.sublist(0, 2),
axis: Axis.horizontal,
),
if (model.views.length == 3)
model.children[2]
else
nestChild(
controller: model.horizontalController2,
children: model.children.sublist(2, 4),
axis: Axis.horizontal,
),
],
),
8 => Row(
children: [
Expanded(
// left page
child: ResizableContainer(
key: const ValueKey(3),
controller: model.verticalController1,
direction: Axis.vertical,
divider: divider,
children: [
nestChild(
// top row
controller: model.horizontalController1,
axis: Axis.horizontal,
children: model.children.sublist(0, 2),
),
nestChild(
// bottom row
controller: model.horizontalController2,
axis: Axis.horizontal,
children: model.children.sublist(2, 4),
),
],
),
),
const VerticalDivider(
width: 12,
color: Colors.transparent,
thickness: 0,
),
Expanded(
// right page
child: ResizableContainer(
key: const ValueKey(4),
controller: model.verticalController2,
direction: Axis.vertical,
divider: divider,
children: [
nestChild(
// top row
controller: model.horizontalController3,
axis: Axis.horizontal,
children: model.children.sublist(4, 6),
),
nestChild(
// bottom row
controller: model.horizontalController4,
axis: Axis.horizontal,
children: model.children.sublist(6, 8),
),
],
),
),
],
),
_ => throw StateError("Too many views: ${model.views.length}"),
},
);