零基础也能学会的Flutter跨平台开发入门指南

温柔的山峰
2026-04-05 02:37
阅读 2157

大家好,我是掘金上经常写技术教程的全栈工程师小张。最近收到不少私信问:“想转行移动开发,但iOS和Android要学两套东西,太难了怎么办?”——其实,我当初学的时候也卡在这个问题上。直到遇见 Flutter,才真正体会到“一次编写,多端运行”的爽快感。

更重要的是,在当下竞争激烈的求职市场中,掌握跨平台技术已成为移动端岗位的加分项甚至硬性要求。而 Flutter 凭借高性能、热重载、统一代码库等优势,被阿里、腾讯、字节等大厂广泛采用。今天这篇教程,就是为完全零基础的朋友量身打造,手把手带你从安装到写出第一个 App。


一、Flutter 是什么?为什么值得学?

简单说:Flutter 是 Google 推出的 UI 工具包,用一套代码就能同时开发 iOS 和 Android 应用(甚至还能做 Web 和桌面端!)。

它不像 React Native 那样依赖原生组件,而是自带渲染引擎(Skia),直接绘制像素,因此性能接近原生,动画丝滑流畅。

我当初面试时,面试官看到我会 Flutter,立刻让我现场写个列表页面——结果因为熟悉热重载(Hot Reload),改代码秒出效果,当场拿下 offer。所以,如果你正在求职,Flutter 绝对值得投入时间学习


二、环境搭建:5 分钟搞定开发准备

💡提示:以下步骤适用于 Windows / macOS / Linux,我以 macOS 为例说明。

第一步:安装 Flutter SDK

  1. 访问 Flutter 官网 → 点击 “Get Started”
  2. 下载对应系统的 SDK 压缩包(约 1GB)
  3. 解压到任意目录,比如 ~/development/flutter
  4. flutter/bin 加入系统 PATH:
# macOS / Linux
echo 'export PATH="$PATH:$HOME/development/flutter/bin"' >> ~/.zshrc
source ~/.zshrc

# Windows(PowerShell)
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\src\flutter\bin", "User")

第二步:运行诊断命令

打开终端,输入:

flutter doctor

你会看到类似这样的输出:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.0)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
[!] Xcode - develop for iOS devices
    ✗ Xcode not installed.
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] VS Code (version 1.87)
[✓] Connected device (1 available)

别慌!我们先专注 Android 开发(iOS 需要 Mac + Xcode,稍复杂)。

第三步:安装 Android Studio

  1. 下载并安装 Android Studio
  2. 启动后,按向导安装默认设置(包括 Android SDK)
  3. 再次运行 flutter doctor,直到所有 ✅

🚨避坑指南:国内网络可能下载慢,可配置镜像(如清华源)。具体方法见 Flutter 中文网。

第四步:选择编辑器

推荐 VS Code + Flutter 插件(轻量、启动快),当然 Android Studio 也行。

  • VS Code:安装 “Flutter” 和 “Dart” 插件
  • Android Studio:安装 “Flutter” 插件(会自动装 Dart)

三、核心概念:3 个关键词搞懂 Flutter

1. Widget —— 一切皆组件

在 Flutter 中,UI 的最小单位叫 Widget(组件)。按钮是 Widget,文本是 Widget,甚至整个页面也是 Widget。

比如显示一行文字:

Text('你好,Flutter!')

组合多个组件:

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

✅记住:Flutter 没有 XML 或 HTML,所有 UI 都用 Dart 代码构建。

2. State —— 状态驱动更新

当用户点击按钮、输入文字时,界面需要变化。这时就要用 State(状态)

例如一个计数器:

class CounterApp extends StatefulWidget {
  @override
  _CounterAppState createState() => _CounterAppState();
}

class _CounterAppState extends State<CounterApp> {
  int count = 0;

  void increment() {
    setState(() {
      count++; // 触发 UI 重新构建
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('点击了 $count 次'),
        ElevatedButton(
          onPressed: increment,
          child: Text('点我'),
        ),
      ],
    );
  }
}

💡关键:调用 setState() 才会刷新界面!

3. Hot Reload —— 修改代码秒生效

这是 Flutter 最爽的功能!
在调试时,修改代码后按 Ctrl+S(或 Cmd+S),App 瞬间更新,无需重启

我当初学 React Native 时每次改样式都要等 10 秒,而 Flutter 热重载只要 300ms,效率提升巨大。


四、实战:做一个待办事项(Todo List)App

现在,我们动手做一个简单的 Todo 应用,涵盖增删查功能。

步骤 1:创建项目

flutter create todo_app
cd todo_app

步骤 2:替换 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: '我的待办',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const TodoListScreen(),
    );
  }
}

class TodoListScreen extends StatefulWidget {
  const TodoListScreen({super.key});

  @override
  State<TodoListScreen> createState() => _TodoListScreenState();
}

class _TodoListScreenState extends State<TodoListScreen> {
  final List<String> todos = [];
  final TextEditingController _controller = TextEditingController();

  void _addTodo() {
    if (_controller.text.isNotEmpty) {
      setState(() {
        todos.add(_controller.text);
        _controller.clear();
      });
    }
  }

  void _removeTodo(int index) {
    setState(() {
      todos.removeAt(index);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Todo 列表')),
      body: Column(
        children: [
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Row(
              children: [
                Expanded(
                  child: TextField(
                    controller: _controller,
                    decoration: const InputDecoration(hintText: '输入任务...'),
                  ),
                ),
                IconButton(
                  icon: const Icon(Icons.add),
                  onPressed: _addTodo,
                ),
              ],
            ),
          ),
          Expanded(
            child: ListView.builder(
              itemCount: todos.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(todos[index]),
                  trailing: IconButton(
                    icon: const Icon(Icons.delete, color: Colors.red),
                    onPressed: () => _removeTodo(index),
                  ),
                );
              },
            ),
          ),
        ],
      ),
    );
  }
}

步骤 3:运行 App

flutter run

连接手机或启动模拟器,你将看到:

  • 顶部输入框 + 添加按钮
  • 下方列表显示任务
  • 每项右侧有删除图标

✅恭喜!你已经做出了第一个跨平台 App!


五、新手常见问题解答

问题 原因 解决方案
flutter doctor 报错 Android license 未接受 SDK 协议 运行 flutter doctor --android-licenses 并按 y 确认
热重载没反应 修改了 main() 或 initState 重启应用(Hot Restart)
中文显示乱码 字体不支持 MaterialApp 中指定字体,或使用系统默认
编译慢 首次构建需下载依赖 耐心等待,后续会快很多
模拟器打不开 HAXM 未安装(Windows) 在 Android Studio SDK Manager 中安装 Intel x86 Emulator Accelerator

💡建议:遇到报错先复制错误信息搜掘金或 Stack Overflow,90% 的问题都有人解决过。


六、高效学习工具推荐

除了官方文档,我还常用这些工具加速开发:

1. GPT-4o 辅助编程

当你卡在某个语法或逻辑时,可以用 GPT-4o 提问,比如:

“用 Flutter 写一个带搜索功能的列表”

它能生成结构清晰、符合最佳实践的代码,特别适合初学者理解模式。但注意:别盲目复制,要理解每一行!

2. Aider:AI 驱动的代码协作

Aider 是一个命令行工具,能直接修改你的本地代码库。例如:

aider --edit todo_app/lib/main.dart "给 Todo 列表加上完成状态的复选框"

它会自动分析代码并插入新逻辑,比手动写快 3 倍,而且保留你的代码风格。

✅求职 tip:在简历中写“熟练使用 AI 工具提升开发效率”,HR 眼前一亮!


七、下一步学习路径建议

  1. 深入状态管理:学 Provider 或 Riverpod(比 setState 更适合大型项目)
  2. 网络请求:用 http 包调用 API,展示远程数据
  3. 本地存储:用 shared_preferences 保存 Todo 列表
  4. 发布上线:打包 APK / IPA,提交到应用商店
  5. 参与开源:在 GitHub 找 Flutter 项目练手

📌最后忠告:不要只看不写!每天敲 30 分钟代码,一周就能做出完整 App


结语

我当初从零开始学 Flutter,只用了两周就做出了一个记账 App,后来靠它拿到了第一份移动端实习 offer。如今,跨平台开发已成趋势,而 Flutter 是最容易上手、生态最成熟的方案之一

希望这篇教程能帮你迈出第一步。记住:每个大神都曾是小白,关键在于动手。

如果你觉得有用,欢迎点赞收藏,也欢迎关注我在掘金的更多教程。下期我们讲《用 Flutter + Firebase 实现用户登录》,敬请期待!


作者:小张,985 全栈工程师,掘金优秀博主
声明:本文代码均可免费用于学习,禁止商用。

评论 0

最热最新
暂无评论
温柔的山峰Lv.1
0
影响力
0
文章
0
粉丝