Flutter 小白入门教程Flutter 小白入门教程
首页
学习指南
项目实战
Flutter 官网
编程指南
首页
学习指南
项目实战
Flutter 官网
编程指南
  • 入门基础

    • 📚 基础教程
    • 第1章 - 认识 Flutter
    • 第2章 - 环境搭建
    • 第3章 - Dart 语言基础
    • 第4章 - 第一个 Flutter 应用
    • 第5章 - Widget 基础
    • 第6章 - 布局系统
    • 第7章 - 状态管理入门
    • 第8章 - 页面导航
    • 第9章 - 资源管理
  • 进阶开发

    • 第10章 - 网络请求
    • 第11章 - 本地存储
    • 第12章 - 对话框与反馈
    • 第13章 - 列表进阶
    • 第14章 - 主题定制
    • 第15章 - 状态管理进阶
    • 第16章 - 动画入门
    • 第17章 - 常用第三方包
  • 调试与发布

    • 第18章 - 调试与性能优化
    • 第19章 - 打包与发布
  • 附录

    • 附录A - UI 框架与组件库推荐
    • 附录B - 项目结构最佳实践
    • 附录C - 国际化配置
    • 附录D - 权限处理

第4章 - 第一个 Flutter 应用

嗨,朋友!我是长安。

终于到了激动人心的时刻——我们要亲手创建第一个 Flutter 应用了!这一章,我会带你从零开始,一步步把 App 跑起来。

🚀 创建项目

打开终端(命令行),进入你想存放项目的目录,运行:

flutter create my_first_app

等待几秒钟,Flutter 会自动创建项目结构:

my_first_app/
├── android/          # Android 原生代码
├── ios/              # iOS 原生代码
├── lib/              # Dart 代码(主要工作区)
│   └── main.dart     # 入口文件
├── test/             # 测试代码
├── pubspec.yaml      # 项目配置文件
└── ...

项目命名规范

Flutter 项目名必须是小写字母,多个单词用下划线连接,如 my_first_app

📂 进入项目目录

cd my_first_app

🏃 运行项目

方式一:命令行运行

# 查看可用设备
flutter devices

# 运行到指定设备
flutter run

# 运行到 Chrome(Web)
flutter run -d chrome

# 运行到 Android 模拟器
flutter run -d emulator-5554

方式二:VS Code 运行(推荐)

  1. 用 VS Code 打开项目文件夹
  2. 打开 lib/main.dart 文件
  3. 点击右上角的 ▶️ Run 按钮,或按 F5
  4. 选择目标设备

第一次运行可能需要几分钟,耐心等待...

🎉 成功了! 你应该能看到一个带计数器的示例应用:

┌─────────────────────────────────┐
│     Flutter Demo Home Page      │
│                                 │
│                                 │
│              0                  │
│   You have pushed the button    │
│         this many times         │
│                                 │
│                          [+]    │
└─────────────────────────────────┘

🔍 理解代码结构

打开 lib/main.dart,让我们逐行理解这段代码:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

关键点解析

代码作用
import 'package:flutter/material.dart'导入 Flutter Material 组件库
void main()程序入口函数
runApp()启动 Flutter 应用
MaterialAppMaterial 风格的应用根组件
StatelessWidget无状态组件
build()构建 UI 的方法

✏️ 修改代码,体验热重载

现在让我们修改代码,体验一下 Flutter 的热重载魔法!

1. 修改标题

找到这行代码:

home: const MyHomePage(title: 'Flutter Demo Home Page'),

改成:

home: const MyHomePage(title: '我的第一个 Flutter 应用'),

2. 保存并查看

按 Ctrl+S(Mac: Cmd+S)保存文件。

神奇的事情发生了! 应用几乎瞬间就更新了,而且状态还保持着!

这就是 热重载(Hot Reload) 的魔力!🔥

🎨 从零写一个简单页面

现在我们把默认代码删掉,自己从零写一个简单的页面。

用以下代码完全替换 lib/main.dart 的内容:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello Flutter',
      debugShowCheckedModeBanner: false,  // 隐藏 debug 标签
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Hello Flutter'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 图标
            const Icon(
              Icons.flutter_dash,
              size: 100,
              color: Colors.blue,
            ),
            const SizedBox(height: 20),
            // 文字
            const Text(
              '欢迎来到 Flutter 的世界!',
              style: TextStyle(
                fontSize: 24,
                fontWeight: FontWeight.bold,
              ),
            ),
            const SizedBox(height: 10),
            const Text(
              '我是长安,这是我的第一个 App',
              style: TextStyle(
                fontSize: 16,
                color: Colors.grey,
              ),
            ),
            const SizedBox(height: 30),
            // 按钮
            ElevatedButton(
              onPressed: () {
                print('按钮被点击了!');
              },
              child: const Text('点击我'),
            ),
          ],
        ),
      ),
    );
  }
}

保存后,你应该能看到这样的界面:

┌─────────────────────────────────┐
│  ←    Hello Flutter             │
├─────────────────────────────────┤
│                                 │
│            🐦                   │
│                                 │
│   欢迎来到 Flutter 的世界!      │
│   我是长安,这是我的第一个 App    │
│                                 │
│        [ 点击我 ]               │
│                                 │
└─────────────────────────────────┘

🧩 代码详解

让我解释一下这段代码中的关键组件:

Scaffold - 页面脚手架

Scaffold(
  appBar: AppBar(...),     // 顶部导航栏
  body: ...,               // 页面主体内容
  floatingActionButton: ..., // 浮动按钮(可选)
  bottomNavigationBar: ...,  // 底部导航栏(可选)
)

Scaffold 是 Material Design 的页面骨架,提供了 App 的基本布局结构。

AppBar - 顶部导航栏

AppBar(
  title: const Text('Hello Flutter'),  // 标题
  leading: ...,                        // 左侧图标
  actions: [...],                      // 右侧操作按钮
)

Center - 居中组件

Center(
  child: Text('我会居中显示'),
)

让子组件在父容器中水平和垂直居中。

Column - 垂直排列

Column(
  children: [
    Text('第一行'),
    Text('第二行'),
    Text('第三行'),
  ],
)

让多个子组件垂直排列。

SizedBox - 间距盒子

SizedBox(height: 20)  // 垂直间距 20 像素
SizedBox(width: 10)   // 水平间距 10 像素

用来在组件之间添加固定间距。

ElevatedButton - 凸起按钮

ElevatedButton(
  onPressed: () {
    // 点击事件处理
  },
  child: Text('按钮文字'),
)

🔧 常用命令

命令作用
flutter run运行应用
flutter run -d chrome运行到 Chrome
r热重载(运行中按)
R热重启(运行中按)
q退出运行
flutter clean清理构建缓存
flutter pub get获取依赖包

📝 小结

这一章我们学习了:

  • ✅ 使用 flutter create 创建项目
  • ✅ 理解项目目录结构
  • ✅ 运行 Flutter 应用
  • ✅ 体验热重载
  • ✅ 认识基本组件:Scaffold、AppBar、Center、Column、Text、Icon、Button

核心概念

在 Flutter 中,一切皆 Widget!界面上的每一个元素(文字、按钮、图片、布局)都是 Widget。

💪 练习题

  1. 修改主题颜色为绿色(Colors.green)
  2. 在页面上添加一个 Image.network() 显示网络图片
  3. 添加一个 FloatingActionButton 浮动按钮
点击查看答案

练习1:修改主题颜色

theme: ThemeData(
  colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
  useMaterial3: true,
),

练习2:添加网络图片

Image.network(
  'https://flutter.dev/images/flutter-logo-sharing.png',
  width: 150,
),

练习3:添加浮动按钮

Scaffold(
  // ... 其他代码
  floatingActionButton: FloatingActionButton(
    onPressed: () {
      print('FAB 被点击了!');
    },
    child: const Icon(Icons.add),
  ),
)

🚀 下一步

恭喜你成功运行了第一个 Flutter 应用!下一章我们来深入学习 Widget 基础,了解更多常用组件。


由 编程指南 提供

最近更新: 2026/2/3 16:24
Contributors: 王长安
Prev
第3章 - Dart 语言基础
Next
第5章 - Widget 基础