Menu
CoddyTech

名前付き引数と必須引数

CoddyのFlutterジャーニー「リストと画面」セクションの一部。レッスン 13/33。

フィールドが3つまたは4つある場合、Book('Dune', 'Frank Herbert', 412)は読みにくく、2つの文字列を誤って入れ替えやすくなります。名前付きパラメーターを使うと、呼び出すたびにフィールド名を指定できます。

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

チャレンジ

中級

各本のページ数を表示します:

  • Bookにfinal int pages;フィールドを追加します
  • コンストラクターを名前付き必須パラメーターに変更し、本をBook(title: 'Dune', author: 'Frank Herbert', pages: 412)のように記述します。Emmaは474ページ、Ulyssesは730ページです
  • 各行の末尾に、タイルのtrailing:として412 pagesを表示します

自分で試してみよう

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オンラインコンパイラ