Champs pouvant être vides
Fait partie de la section Listes et écrans du Journey Flutter de Coddy. Leçon 14 sur 33.
Tous les contacts n’ont pas d’adresse e-mail. Un champ qui peut ne rien contenir a un ? après son type, et sa valeur est null lorsqu’aucune valeur n’a été fournie :
class Contact {
final String name;
final String? email;
Contact({required this.name, this.email});
}Sans required, email: peut être omis : Contact(name: 'Alan Turing') a une valeur email de null.
Vous ne pouvez pas appeler de méthode sur null, donc Dart vous empêche d’écrire contact.email.toLowerCase(). Écrivez ?. à la place du point : contact.email?.toLowerCase() appelle la méthode lorsqu’il y a une adresse e-mail, et renvoie null dans le cas contraire. Ensuite, ?? choisit une valeur de remplacement :
Text(contact.email?.toLowerCase() ?? 'No email')Défi
FacileLes adresses e-mail ont été saisies avec des majuscules aléatoires, et Alan n’en a pas. Donne à chaque vignette un subtitle: qui affiche l’adresse e-mail en minuscules, ou No email lorsqu’il n’y en a pas.
Essayez vous-même
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});
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Listes et écrans
1Listes défilantes
Une liste qui défileÉléments de listeDébut et finAppuyer sur un élément de listeSéparateurs entre les lignes4Vos propres classes
Une classe pour vos donnéesParamètres nommés et obligatoiresChamps pouvant être videsCréer des widgets à partir de données avec mapFiltrer une liste avec whereRechercher dans une map2Des listes à partir de données
Construire des lignes avec un générateurNuméroter les lignesLignes avec séparateursEntraînez-vous par vous-même : Compilateur Flutter en ligne