名前付き引数と必須引数
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:を省略すると、アプリの実行前にエディターがエラーを表示します。
チャレンジ
中級各本のページ数を表示します:
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);
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
リストと画面のすべてのレッスン
自分で練習してみよう: Flutterオンラインコンパイラ