resolveBitExpansionMenuValue function

Future<BitExpansionAction?> resolveBitExpansionMenuValue(
  1. BuildContext context, {
  2. required String? value,
  3. required String signalName,
  4. required int width,
})

Translate a popup-menu value returned by showMenu<String> into a BitExpansionAction, showing any follow-up dialog as needed.

Returns:

Implementation

Future<BitExpansionAction?> resolveBitExpansionMenuValue(
  BuildContext context, {
  required String? value,
  required String signalName,
  required int width,
}) async {
  if (value == BitExpansionMenuValues.expandBits) {
    if (width <= BitFieldUtils.expandThreshold) {
      return BitExpandRangeAction(0, width - 1);
    }
    final parsed = await showBitRangeDialog(
      context,
      signalName: signalName,
      width: width,
    );
    if (parsed == null) {
      return null;
    }
    final (high, low) = parsed;
    return BitExpandRangeAction(low, high);
  }
  if (value == BitExpansionMenuValues.defineFields) {
    final fields = await showDefineBitFieldsDialog(
      context,
      signalName: signalName,
      width: width,
    );
    if (fields == null || fields.isEmpty) {
      return null;
    }
    return BitDefineFieldsAction(fields);
  }
  return null;
}