bool.parse în Dart

Transformă textul "true" sau "false" în valoarea bool; tryParse returnează null pentru orice alt text.

Sintaxă
static bool parse(String source, {bool caseSensitive = true})
static bool? tryParse(String source, {bool caseSensitive = true})

Ce face bool.parse

bool.parse('true') returnează true, iar bool.parse('false') returnează false. Orice alt text aruncă FormatException; bool.tryParse returnează în schimb null.

Implicit contează literele mari și mici: 'True' nu este acceptat. Cu caseSensitive: false sunt acceptate și 'TRUE' sau 'False'. Alte forme ('da', '1', 'yes') nu sunt înțelese; pentru ele scrii propria funcție. Spațiile nu sunt eliminate, așa că apelează întâi trim().

Parametri

Parametru Descriere
source Textul de transformat.
caseSensitive false acceptă orice combinație de litere mari și mici.

Ce returnează

parse: un bool. tryParse: un bool?.

Exemple

Exemplul 1: Texte acceptate și respinse

void main() {
  print(bool.parse('true'));
  print(bool.parse('false'));
  print(bool.tryParse('True'));
  print(bool.tryParse('True', caseSensitive: false));
  print(bool.tryParse('da'));
  print(bool.tryParse(' true '));
  try {
    bool.parse('1');
  } on FormatException catch (e) {
    print('Eroare: ${e.message}');
  }
}

Rezultat

true
false
null
true
null
null
Eroare: Invalid boolean

Exemplul 2: Setări citite dintr-un fișier de configurare

bool citesteOptiune(String valoare) {
  var curat = valoare.trim().toLowerCase();
  return bool.tryParse(curat) ?? const {'da', '1', 'yes', 'on'}.contains(curat);
}

void main() {
  var config = {'notificari': 'TRUE', 'mod_intunecat': 'da', 'sunet': 'off', 'beta': ' false '};
  config.forEach((cheie, valoare) {
    print('$cheie = ${citesteOptiune(valoare)}');
  });
}

Rezultat

notificari = true
mod_intunecat = true
sunet = false
beta = false

Greșeli frecvente

  • Te aștepți ca bool.parse('1') sau bool.parse('da') să dea true. Doar 'true' și 'false' sunt acceptate.
  • Scrii bool.parse(text) == true pentru texte venite de la utilizator: un text greșit oprește programul. Folosește tryParse cu o valoare implicită.

Comenzi înrudite

  • bool: Tipul logic din Dart, cu exact două valori: true și false. Condițiile din if și while trebuie să fie bool.
  • int.parse: Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.
  • FormatException: Excepția aruncată când un text nu are formatul așteptat (int.parse(‘abc’), JSON greșit, dată invalidă).