Menu
CoddyTech

Именованные и обязательные параметры

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

При трёх или четырёх полях запись Book('Dune', 'Frank Herbert', 412) сложно читать, и легко случайно поменять местами две строки. Именованные параметры указывают имя поля при каждом вызове:

class Book {
  final String title;
  final int pages;

  Book({required this.title, required this.pages});
}

Book(title: 'Dune', pages: 412)

Фигурные скобки в конструкторе делают параметры именованными. Каждый параметр записывается в формате name: value, в любом порядке.

Виджеты, которые ты уже использовал, тоже принимают именованные параметры, например Text(style: ...) или ListTile(title: ...).

required означает, что параметр необходимо указать: пропусти pages:, и редактор покажет ошибку до запуска приложения.

challenge icon

Задание

Средне

Покажите, сколько страниц в каждой книге:

  • добавьте поле final int pages; в Book
  • измените конструктор, чтобы он принимал именованные обязательные параметры, и запишите книги так: Book(title: 'Dune', author: 'Frank Herbert', pages: 412). В книге Emma 474 страницы, а в Ulysses — 730
  • покажите 412 pages в конце каждой строки как значение свойства trailing: элемента

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

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<Book> books = [
      Book('Dune', 'Frank Herbert'),
      Book('Emma', 'Jane Austen'),
      Book('Ulysses', 'James Joyce'),
    ];
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('Books')),
        body: ListView(
          children: [
            for (Book book in books)
              ListTile(
                title: Text(book.title),
                subtitle: Text(book.author),
              ),
          ],
        ),
      ),
    );
  }
}

class Book {
  final String title;
  final String author;

  Book(this.title, this.author);
}
quiz iconПроверьте себя

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

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

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