跳转至正文

创建应用

如何创建新 Flutter 应用的说明。

学习构建 Flutter 应用的第一步:从创建项目到理解 widget 与热重载。

你将完成的内容

使用 CLI 创建新的 Flutter 项目
理解 widget 与 widget 树
运行应用并使用热重载

步骤

1

你将构建的内容

在 Flutter 教程的第一部分,你将构建名为「Birdle」的应用的核心 UI,这是一款类似于 Wordle,纽约时报的热门游戏 的游戏。

A screenshot that resembles the popular game Wordle.

学完本教程后,你将掌握构建 Flutter UI 的基础知识,你的应用将与下面的截图相似(而且基本上还能正常运行 😀)。

2

创建新的 Flutter 项目

构建 Flutter 应用的第一步是创建新项目。你可以使用随 Flutter SDK 一起安装的 Flutter CLI 工具 创建新应用。

打开终端或命令提示符,运行以下命令以创建新的 Flutter 项目:

flutter create birdle --empty

这将使用精简的「empty」模板创建一个新的 Flutter 项目。

3

查看代码

在 IDE 中打开 lib/main.dart 文件。从文件顶部开始,你会看到以下代码。

lib/main.dart
dart
void main() {
  runApp(const MainApp());
}

main 函数是任何 Dart 程序的入口点,而 Flutter 应用本质上就是一个 Dart 程序。 runApp 方法是 Flutter SDK 的一部分,它接受一个 widget 作为参数。此处传入的是 MainApp widget 的一个实例。

main 函数正下方,你会找到 MainApp 类的声明。

dart
class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('Hello World!'),
        ),
      ),
    );
  }
}

MainApp根 widget,因为它是传入 runApp 的 widget。在这个 widget 内部,有一个 build 方法,它返回名为 MaterialApp 的另一个 widget。本质上,Flutter 应用就是这样:由多个 widget 组合而成,构成称为 widget 树 的树形结构。

作为 Flutter 开发者,你的任务是将 SDK 中的 widget 组合成更大的自定义 widget,以展示 UI。

目前,widget 树相当简单:

A screenshot that resembles the popular game Wordle.
4

运行应用

  1. 在终端中,进入你创建的 Flutter 应用的根目录:

    cd birdle
    
  2. 使用 Flutter CLI 工具运行应用。

    flutter run -d chrome
    

    应用将在新的 Chrome 实例中构建并启动。

A screenshot that resembles the popular game Wordle.
5

使用热重载

如果你还没听说过 有状态热重载,它可以让正在运行的 Flutter 应用在不到一秒内重新渲染更新后的业务逻辑或 UI 代码——而且不会丢失你在应用中的当前位置。

在 IDE 中打开 main.dart 文件,定位到约第 15 行,找到以下代码:

dart
child: Text('Hello World!'),

将字符串中的文本改为你想要的任何内容。然后,在运行应用的终端中按 r 进行热重载。正在运行的应用应立即显示你更新后的文本。

6

回顾

你完成的内容

以下是你本课构建与学习内容的摘要。
创建了第一个 Flutter 项目

你使用带 --empty 标志的 flutter create 搭建了一个精简的 Flutter 项目。 CLI 会生成项目结构和入门所需的样板代码。

探索了 widget 树

Flutter UI 通过将 widget 组合成树形结构来构建。 runApp 函数接受根 widget,该 widget 的 build 方法返回其他 widget,形成 widget 树。作为 Flutter 开发者,你的任务是将这些 widget 组合成自定义 UI。

使用热重载运行了应用

你使用 flutter run 运行了应用,并体验了 有状态热重载,它让你在不到一秒内看到代码变更的反映,且不会丢失应用状态。在终端中按 r 可触发热重载。

7

自测

创建应用测验

1 / 2
Flutter 应用中 runApp 函数的作用是什么?
  1. 它将 Dart 代码编译为原生机器码。

    不正确。

    编译在应用运行之前完成;runApp 使用根 widget 启动 Flutter 框架。

  2. 它接受一个 widget 作为参数,并将其设为 widget 树的根。

    正确!

    runApp 函数会展开给定的 widget 并将其附加到屏幕,使其成为 widget 树的根。

  3. 它为项目创建 main.dart 文件。

    不正确。

    该文件由 flutter create 创建;runApp 在运行时调用。

  4. 它从互联网下载 Flutter 依赖。

    不正确。

    依赖由 flutter pub get 管理,而非 runApp

当 Flutter 应用在终端中运行时,如何触发热重载?
  1. 在终端中按 h

    不正确。

    h 会显示帮助选项;按 r 触发热重载。

  2. 在终端中按 r

    正确!

    在运行应用的终端中按 r 会触发热重载。

  3. 使用 flutter run 停止并重启应用。

    不正确。

    无需完全重启;热重载更快。

  4. 保存文件并等待自动重载。

    不正确。

    默认情况下,你需要在终端中按 r 才能触发热重载。