Menu
CoddyTech

为数据创建一个类

本课属于 Coddy Flutter 学习旅程的“列表和屏幕”单元。第 12 课,共 33 课。

一本书不只是一个字符串:它有书名和作者,而且两者属于同一本书。类描述一种由命名部分组成的新类型的值,这些部分称为字段:

class Book {
  final String title;
  final String author;

  Book(this.title, this.author);
}

这一行 Book(this.title, this.author); 是构造函数:它会创建一本新书,并按顺序填入各个字段。Book('Dune', 'Frank Herbert') 表示一本书名为 Dune 的书。

用点号读取字段:book.title、book.author。书籍列表的类型是 List<Book>,就像字符串列表的类型是 List<String> 一样。

类应单独放置在你的小组件类之外,通常放在文件底部。

challenge icon

挑战

中等

Book 类只有书名。给它添加作者:

  • 添加一个 final String author; 字段,并在构造函数中、书名之后为它赋值
  • 为每本书添加作者:Frank Herbert、Jane Austen 和 James Joyce
  • 将作者显示为每个列表项的 subtitle

亲手试试

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'),
      Book('Emma'),
      Book('Ulysses'),
    ];
    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),
              ),
          ],
        ),
      ),
    );
  }
}

class Book {
  final String title;

  Book(this.title);
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

列表和屏幕中的所有课

自己练习: Flutter 在线编译器