Erdnaxela3/bioptim_gui

View on GitHub
gui/lib/widgets/edit_bounds/dof_edit_row.dart

Summary

Maintainability
Test Coverage
import 'package:bioptim_gui/models/acrobatics_data.dart';
import 'package:bioptim_gui/models/decision_variables_type.dart';
import 'package:bioptim_gui/models/ocp_data.dart';
import 'package:bioptim_gui/widgets/edit_bounds/variable_dof_column.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class DofEditRow extends StatelessWidget {
  final DecisionVariableType decisionVariableType;
  final int dofIndex;

  const DofEditRow({
    super.key,
    required this.decisionVariableType,
    required this.dofIndex,
  });

  @override
  Widget build(BuildContext context) {
    return Consumer<OCPData>(builder: (context, data, child) {
      final int variableCount =
          decisionVariableType == DecisionVariableType.state
              ? data.phasesInfo[0].stateVariables.length
              : data.phasesInfo[0].controlVariables.length;

      return SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: Row(
          children: [
            Column(
              children: [
                SizedBox(
                  width: 100,
                  child: Text(
                    decisionVariableType == DecisionVariableType.state
                        ? (data is AcrobaticsData
                            ? data.dofNames[dofIndex]
                            : '$dofIndex')
                        : '$dofIndex',
                    textAlign: TextAlign.center,
                    overflow: TextOverflow.clip,
                  ),
                ),
              ],
            ),
            const SizedBox(height: 12),
            for (int variableIndex = 0;
                variableIndex < variableCount;
                variableIndex++)
              VariableDofColumn(
                  decisionVariableType: decisionVariableType,
                  variableIndex: variableIndex,
                  dofIndex: dofIndex),
          ],
        ),
      );
    });
  }
}