Ce face String.length
length returnează lungimea textului: 'Iași'.length este 4. Textul gol '' are lungimea 0. Pentru a verifica dacă un text este gol, folosește isEmpty (sau opusul, isNotEmpty): se citește mai ușor decât length == 0.
Atenție: length numără unități de cod UTF-16, nu litere văzute pe ecran. Literele românești (ă, ș, ț) ocupă o unitate, dar emoji-urile și alte caractere rare ocupă două: '😀'.length este 2. Pentru numărul real de caractere Unicode folosește text.runes.length (vezi runes).
Un text cu doar spații nu este gol: ' '.isEmpty este false. Pentru câmpuri de formular verifică text.trim().isEmpty.
Ce returnează
length: un int. isEmpty, isNotEmpty: un bool.
Exemple
Exemplul 1: Lungimea și textul gol
void main() {
print('Iași'.length);
print('Timișoara'.length);
print(''.length);
print(''.isEmpty);
print('Ana'.isNotEmpty);
print(' '.isEmpty);
print(' '.trim().isEmpty);
print('😀'.length);
print('😀'.runes.length);
}
Rezultat
4
9
0
true
true
false
true
2
1
Exemplul 2: Validarea unui nume de utilizator
Verificăm întâi dacă textul este gol după trim(), apoi lungimea minimă și maximă.
String verifica(String nume) {
var curat = nume.trim();
if (curat.isEmpty) return 'Numele este obligatoriu';
if (curat.length < 3) return 'Numele „$curat” este prea scurt';
if (curat.length > 12) return 'Numele are ${curat.length} caractere (maxim 12)';
return 'Nume valid: $curat';
}
void main() {
for (var n in ['', ' ', 'Al', 'ana.popescu', 'mihai_ionescu_iasi']) {
print(verifica(n));
}
}
Rezultat
Numele este obligatoriu
Numele este obligatoriu
Numele „Al” este prea scurt
Nume valid: ana.popescu
Numele are 18 caractere (maxim 12)
Greșeli frecvente
- Scrii
text.length()cu paranteze.lengtheste o proprietate (getter), nu o metodă. - Folosești
lengthpentru a număra caracterele dintr-un text cu emoji: rezultatul poate fi mai mare. Foloseșterunes.length.
Comenzi înrudite
String: Tipul pentru text în Dart: un șir de caractere care nu se mai poate modifica după creare.String.trim: Elimină spațiile albe (spații, tab-uri, rânduri noi) de la începutul și/sau sfârșitul textului.String.codeUnitAt: Dau codurile numerice ale caracterelor: unități UTF-16 (codeUnitAt, codeUnits) sau puncte Unicode (runes).