Flutter入门:从零开始构建跨平台应用
开篇:Flutter是什么,用来做什么?

在移动开发的世界里,Flutter 是一个非常火的工具。简单来说,它是一个由 Google 推出的开源框架,允许你用一套代码同时开发 iOS 和 Android 应用,甚至还能做 Web 和桌面应用。
为什么说它强大呢?因为很多以前你需要分别写两套代码的事情,现在只需要写一次就可以了。比如做一个天气 App,原本可能需要学 Java 或 Kotlin 来写安卓、用 Swift 写 iOS,但现在你只需要学会 Dart(这是 Flutter 使用的语言),就能搞定全部。
学 Flutter 难吗?
对完全没编程经验的新手来说,肯定有点挑战。但好消息是:只要你有耐心,并且愿意动手实践,就一定能上手!本教程就是为你量身打造的,我们会从最基础的内容讲起,边讲边敲代码,让你真正“跑”起来你的第一个 App!
环境准备:安装 Flutter 开发环境

第一步:安装 Flutter SDK
SDK 全称是 Software Development Kit,你可以把它理解成“开发工具包”。
- 打开浏览器,访问 https://flutter.dev
- 点击 “Get Started”
- 根据你的操作系统选择对应的安装包:
- Windows:下载 Windows 版
- macOS:用终端命令
brew install --cask flutter(需先装 Homebrew) - Linux:下载后解压即可
验证是否安装成功:
打开终端或命令行工具,输入:
flutter doctor
如果看到类似下面的输出:
✓ Flutter is ready to use.
✓ Connected device found.
说明你已经安装成功了!
第二步:安装编辑器
推荐使用 Android Studio 或 Visual Studio Code (VSCode)。两者都支持 Flutter 插件,帮你更轻松地开发和调试。
以 VSCode 为例:
- 下载安装 VSCode
- 打开后,在扩展商店搜索 “Flutter”
- 安装官方插件
安装完成后,再运行一次 flutter doctor,你会看到提示“IDE 已就绪”。
第三步:配置模拟器(安卓)或模拟设备(iOS)
- 安卓用户:通过 Android Studio 创建 AVD(安卓虚拟设备)
- 苹果用户:Xcode 自带 iPhone 模拟器
你也可以直接连接真机进行调试(数据线连接手机后启用开发者选项即可)
核心概念:Flutter 的关键术语解释

学习任何新知识,第一步就是理解它的关键词语。下面是几个你必须掌握的概念:
1. Widget(组件)
你可以把 Widget 当作是构成界面的“积木”。所有的 UI(用户界面)内容,都是由一个个 Widget 组成的。
例如:按钮、文字、图片、输入框等,都是 Widget。
Text("Hello, Flutter!")
Button(child: Text("点我"))
Image.asset('images/logo.png')
2. Scaffold(脚手架)
Scaffold 是一个特殊的 Widget,用来组织页面结构。它可以包含导航栏、浮动按钮、菜单等内容。
Scaffold(
appBar: AppBar(title: Text("首页")),
body: Center(child: Text("欢迎来到 Flutter!")),
floatingActionButton: FloatingActionButton(onPressed: () {}),
)
3. State(状态)
State 表示的是一个页面中可能会发生变化的数据。比如点击按钮改变颜色、获取网络数据、表单填写内容等。
Flutter 分为两种类型的 Widget:
- StatelessWidget:静态部件,不关心状态变化
- StatefulWidget:动态部件,用于管理状态
class MyButton extends StatefulWidget {
@override
_MyButtonState createState() => _MyButtonState();
}
class _MyButtonState extends State<MyButton> {
int count = 0;
void increaseCounter() {
setState(() {
count++;
});
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: increaseCounter,
child: Text("你点了 $count 次"),
);
}
}
实战项目:制作一个简单的计数器应用


目标:
我们来做一个简单的“点击按钮增加数字”的应用,帮助你理解如何创建界面和处理交互。
步骤 1:创建项目
在命令行输入以下命令创建新项目:
flutter create counter_app
cd counter_app
code .
这会新建一个名为 counter_app 的项目,并自动用 VSCode 打开。
步骤 2:修改 main.dart 文件
打开 lib/main.dart,替换所有代码如下:
import 'package:flutter/material.dart';
void main() {
runApp(CounterApp());
}
class CounterApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '计数器 App',
home: CounterPage(),
);
}
}
class CounterPage extends StatefulWidget {
@override
_CounterPageState createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int counter = 0;
void incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter 计数器'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('当前数值:', style: TextStyle(fontSize: 20)),
Text('$counter', style: TextStyle(fontSize: 48, fontWeight: FontWeight.bold)),
SizedBox(height: 20),
ElevatedButton.icon(
onPressed: incrementCounter,
icon: Icon(Icons.add),
label: Text('点击加一'),
)
],
),
),
);
}
}
这段代码做了什么?
main()函数是入口点,告诉程序从哪个类开始运行MaterialApp是 Flutter 提供的一个默认主题样式库Scaffold构建了一个页面骨架Column是垂直排列的布局容器Text显示文本ElevatedButton.icon添加一个带图标按钮setState()方法用于更新状态并刷新界面
步骤 3:运行应用
确保你已经启动了模拟器或者连接了真实设备。然后运行以下命令:
flutter run
等待几秒钟后,你应该能看到一个简单的界面,每点击一次按钮数字都会增加一。
常见问题解答(FAQ)
Q1:为什么 setState 要放在 onPressed 里面?
A:Flutter 是响应式框架,UI 的变化依赖于状态的变化。当你调用 setState(),Flutter 会重新执行 build() 方法刷新界面。所以每次你想更新界面时,都要用这个函数包裹你的变量操作。
Q2:怎么查看打印日志?
A:可以在代码中加入:
print('当前值是:$counter');
运行后在终端就可以看到输出的日志信息。
Q3:Flutter 性能怎么样?会不会卡顿?
A:Flutter 的性能非常好。因为它有自己的渲染引擎,绕过了原生系统控件,绘图效率更高。只要你不滥用复杂动画和大图片,一般不会出现卡顿。
Q4:Flutter 只能做移动端吗?
A:不是。Flutter 现在支持构建:
- 移动端(iOS/Android)
- Web 应用(网页版)
- 桌面应用(Windows/macOS/Linux)
- 嵌入式设备如智能电视、IoT 设备等
学习建议:下一步可以学什么?
恭喜你完成了第一个 Flutter 应用!接下来你可以顺着以下路线继续深入学习:
✅ 第一阶段:继续练 UI
- 熟悉各种常用组件:
ListView,TextField,Checkbox,DropdownButton等 - 学会布局:Row、Column、Stack、Wrap 等布局方式
- 尝试做一个 Todo 列表或者表单提交功能
✅ 第二阶段:学习路由跳转
- 如何实现多个页面之间的切换?
- 使用
Navigator.push实现跳转 - 带参数传参、返回值等技巧
Navigator.push(context, MaterialPageRoute(builder: (context) => SecondPage()));
✅ 第三阶段:接入网络请求与本地存储
- 请求接口:使用
http包发起 GET/POST 请求 - 保存数据:使用
shared_preferences保存用户偏好 - 数据持久化:引入本地数据库如 Hive 或 SQLite
# pubspec.yaml 中添加依赖
dependencies:
http: ^0.15.0
shared_preferences: ^2.2.1
✅ 第四阶段:实战项目进阶
尝试做个实际可用的项目:
- 天气查询 App(调用 OpenWeatherMap API)
- 笔记应用(增删查改 + 数据本地保存)
- 新闻阅读器(展示图文、列表加载更多)
总结
这篇文章带你从零开始了解了 Flutter,并亲手搭建了一个简单的计数器应用。通过本文的学习,你应该已经掌握了以下几个核心能力:
- 安装 Flutter 并搭建开发环境
- 理解 Widget 和状态的基本原理
- 用代码构建基本 UI 页面
- 编写带有交互功能的 App
- 解决初学者常见问题
记住一句话:多敲代码,少空想。每个程序员都不是天生就会写代码的,而是写出来的!从今天开始,坚持每天练习,你也能成为一名 Flutter 开发者!
如果你还有疑问,欢迎留言评论,我会尽可能为你一一解答 💪

评论 0