getBool method

  1. @override
bool? getBool(
  1. Object? value,
  2. bool? defaultValue
)
override

Implementation

@override
bool? getBool(Object? value, bool? defaultValue) {
  if (value == null) {
    return defaultValue;
  } else if (value is bool) {
    // exactly
    return value;
  } else if (value is num) {  // int, double
    if (value is double) {
      assert(value == 1.0 || value == 0.0, 'bool value error: $value');
      return value != 0.0;
    }
    assert(value == 1 || value == 0, 'bool value error: $value');
    return value != 0;
  }
  String text = getStr(value);
  text = text.trim();
  int size = text.length;
  if (size == 0) {
    return false;
  } else if (size > Converter.MAX_BOOLEAN_LEN) {
    throw FormatException('bool value error: "$value"');
  } else {
    text = text.toLowerCase();
  }
  bool? state = Converter.BOOLEAN_STATES[text];
  if (state == null) {
    throw FormatException('bool value error: "$value"');
  }
  return state;
}