Menu
CoddyTech

Поля, которые могут быть пустыми

Часть раздела Списки и экраны путешествия по Flutter на Coddy. Урок 14 из 33.

Не у каждого контакта есть электронная почта. После типа поля, которое может быть пустым, ставится ?, а его значение — null, если ничего не указано:

class Contact {
  final String name;
  final String? email;

  Contact({required this.name, this.email});
}

Без required параметр email: можно не указывать: у Contact(name: 'Alan Turing') значение email равно null.

Нельзя вызвать метод для null, поэтому Dart не позволяет написать contact.email.toLowerCase(). Вместо точки напиши ?.: contact.email?.toLowerCase() вызывает метод, если адрес электронной почты есть, и возвращает null, если его нет. Затем ?? выбирает запасное значение:

Text(contact.email?.toLowerCase() ?? 'No email')
challenge icon

Задание

Легко

Адреса электронной почты набраны с произвольными заглавными буквами, а у Alan адреса нет. Добавь каждой плитке subtitle:, который показывает адрес электронной почты строчными буквами или No email, если адреса нет.

Попробуйте сами

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});
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Списки и экраны

Потренируйтесь самостоятельно: Онлайн-компилятор Flutter