build method
- @override
- BuildContext context,
- SubsystemsViewModel model
override
Builds the UI according to the state in model.
Implementation
@override
Widget build(BuildContext context, SubsystemsViewModel model) => LayoutBuilder(
builder:
(context, constraints) => Column(
mainAxisSize: MainAxisSize.min,
children: [
PageHeader(
pageIndex: index,
children: [
const SizedBox(width: 8),
Text("Subsystems", style: context.textTheme.headlineMedium),
const Spacer(),
],
),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Flexible(
child: SizedBox(
height: constraints.maxHeight - 48,
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Card(
elevation: 5,
child: Padding(
padding: const EdgeInsets.all(8),
child: RelaysView(model: model),
),
),
Card(
elevation: 5,
child: Padding(
padding: const EdgeInsets.all(8),
child: Wrap(
runSpacing: 5,
alignment: WrapAlignment.center,
spacing: 15,
runAlignment: WrapAlignment.center,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
FilledButton(
onPressed: () => model.zeroImu(),
child: const Text("Zero IMU"),
),
sensorConnectionStatus("GPS", model.subsystems.gpsConnected),
sensorConnectionStatus("IMU", model.subsystems.imuConnected),
],
),
),
),
],
),
),
),
),
if (model.subsystems.connectedDevices.isNotEmpty) ...[
const SizedBox(width: 10),
SizedBox(
width: 225,
height: min(
constraints.maxHeight - 48,
model.subsystems.connectedDevices.length * 100,
),
child: FirmwareStatuses(model: model),
),
],
],
),
],
),
);