Felder, die leer sein können
Teil des Abschnitts Listen und Bildschirme der Flutter-Journey von Coddy. Lektion 14 von 33.
Nicht jeder Kontakt hat eine E-Mail-Adresse. Ein Feld, das leer sein kann, hat nach seinem Typ ein ?, und sein Wert ist null, wenn nichts angegeben wurde:
class Contact {
final String name;
final String? email;
Contact({required this.name, this.email});
}Ohne required kann email: weggelassen werden: Contact(name: 'Alan Turing') hat für email den Wert null.
Du kannst keine Methode auf null aufrufen, daher verhindert Dart, dass du contact.email.toLowerCase() schreibst. Schreibe stattdessen ?. anstelle des Punkts: contact.email?.toLowerCase() ruft die Methode auf, wenn eine E-Mail-Adresse vorhanden ist, und ergibt null, wenn keine vorhanden ist. Dann wählt ?? einen Ersatzwert aus:
Text(contact.email?.toLowerCase() ?? 'No email')Aufgabe
EinfachE-Mail-Adressen wurden mit zufälligen Großbuchstaben eingegeben, und Alan hat keine. Gib jeder Kachel ein subtitle:, das die E-Mail-Adresse in Kleinbuchstaben anzeigt, oder No email, wenn keine vorhanden ist.
Probier es selbst
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final List<Contact> contacts = [
Contact(name: 'Ada Lovelace', email: 'Ada@Example.com'),
Contact(name: 'Alan Turing'),
Contact(name: 'Grace Hopper', email: 'GRACE@NAVY.MIL'),
];
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Contacts')),
body: ListView(
children: [
for (Contact contact in contacts)
ListTile(
title: Text(contact.name),
),
],
),
),
);
}
}
class Contact {
final String name;
final String? email;
Contact({required this.name, this.email});
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Listen und Bildschirme
1Scrollbare Listen
Eine scrollbare ListeListenelementeVorne und hintenEin Listenelement antippenTrennlinien zwischen Zeilen4Deine eigenen Klassen
Eine Klasse für deine DatenBenannte und erforderliche ParameterFelder, die leer sein könnenWidgets aus Daten mit mapEine Liste mit where filternIn einer Map nachschlagenÜbe selbstständig: Online-Flutter-Compiler