一、引言:为什么选择 Flutter?
在移动应用开发领域,开发者常常面临一个难题:如何同时为 iOS 和 Android 构建高质量、高性能的应用?传统方式需要分别使用 Swift/Kotlin 编写两套代码,维护成本高、迭代效率低。
而 Flutter —— 由 Google 推出的开源 UI 工具包,凭借“一次编写,多端运行”的理念,迅速成为跨平台开发的热门选择。它不仅支持 iOS 和 Android,还扩展到 Web、Windows、macOS 和 Linux!
本文将带你从零开始了解 Flutter,通过图文并茂的方式和完整代码案例,助你快速上手!
二、Flutter 的核心优势
✅ 1. 高性能渲染
Flutter 使用 Skia 图形引擎直接绘制 UI,绕过原生控件,实现 60fps 甚至 120fps 的流畅体验。
图:Flutter 渲染不依赖原生组件,直接操作 GPU
✅ 2. 热重载(Hot Reload)
修改代码后无需重新编译,秒级刷新 UI,极大提升开发效率。
✅ 3. 丰富的 Widget 生态
一切皆是 Widget!从按钮到布局,全部由可组合的 Widget 构成,灵活且一致。
✅ 4. 单一代码库
一套 Dart 代码,可编译为 iOS、Android、Web 等多个平台应用。
三、环境搭建(以 Windows 为例)
-
安装 Flutter SDK
官网下载:https://flutter.dev
解压到C:\src\flutter -
配置环境变量
将C:\src\flutter\bin添加到系统 PATH。 -
安装 Android Studio + Flutter/Dart 插件
-
运行命令检查环境:
bash
编辑
flutter doctor
确保所有项都打勾 ✅。
四、第一个 Flutter 应用:Hello World!
1. 创建项目
bash
编辑
flutter create my_first_app
cd my_first_app
flutter run
2. 核心代码解析(lib/main.dart)
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(primarySwatch: Colors.blue),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('欢迎使用 Flutter!')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Text(
'Hello, CSDN!',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
SizedBox(height: 20),
FlutterLogo(size: 100),
],
),
),
);
}
}
3. 运行效果(模拟器截图)
图:运行在 Android 模拟器上的 Flutter 应用
💡 提示:修改文字内容后,按
r键即可热重载,无需重启!
五、实战案例:一个简单的待办事项(Todo)应用
下面我们构建一个具备添加、删除功能的 Todo 列表,展示 Flutter 的状态管理能力。
1. 整体结构
- 使用
StatefulWidget管理任务列表状态 - 通过
TextField输入新任务 ListView.builder动态渲染列表- 点击删除图标移除任务
2. 完整代码
dart
编辑
import 'package:flutter/material.dart';
void main() => runApp(const TodoApp());
class TodoApp extends StatelessWidget {
const TodoApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Todo List',
theme: ThemeData(primarySwatch: Colors.green),
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 _addTodoItem(String title) {
if (title.trim().isNotEmpty) {
setState(() {
_todos.add(title);
});
_controller.clear();
}
}
void _removeTodoItem(int index) {
setState(() {
_todos.removeAt(index);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('我的待办事项')),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: TextField(
controller: _controller,
decoration: const InputDecoration(hintText: '输入新任务...'),
onSubmitted: _addTodoItem,
),
),
IconButton(
icon: const Icon(Icons.add),
onPressed: () => _addTodoItem(_controller.text),
),
],
),
),
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: () => _removeTodoItem(index),
),
);
},
),
),
],
),
);
}
}
3. 运行效果
图:动态添加/删除待办事项(GIF 动图示意)
✅ 该应用可直接在 Android、iOS 上运行,UI 完全一致!
六、Flutter 支持的平台
| 平台 | 状态 | 适用场景 |
|---|---|---|
| Android | Stable | 所有移动应用 |
| iOS | Stable | 所有移动应用 |
| Web | Stable | PWA、管理后台等 |
| Windows | Stable | 桌面工具 |
| macOS | Stable | Mac 应用 |
| Linux | Stable | 开发者工具 |
自 Flutter 3.0 起,六大平台均已进入稳定版!
七、常见问题 FAQ
Q1:Flutter 性能真的接近原生吗?
A:是的!由于自绘 UI 且编译为原生 ARM 代码,性能非常接近原生,尤其适合动画和复杂 UI。
Q2:学习 Dart 语言难吗?
A:Dart 语法类似 Java/JavaScript,上手快。官方提供交互式教程:Dart 官方入门
Q3:能否调用原生功能(如摄像头、蓝牙)?
A:可以!通过 Platform Channels 或使用社区插件(如 camera, blue_thermal_printer)轻松集成。
八、结语
Flutter 正在改变跨平台开发的格局。无论是初创公司快速验证产品,还是大厂统一多端体验,Flutter 都是一个极具竞争力的选择。
🚀 建议行动:
- 安装 Flutter 环境
- 运行本文中的 Todo 示例
- 尝试将其打包为 Web 或 Windows 应用!
771

被折叠的 条评论
为什么被折叠?



