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

在移动开发领域,很多开发者曾面临一个难题:为 Android 写一遍代码,还要再为 iOS 写一遍功能相似的代码。效率低、维护难。
Flutter 由 Google 推出,是一款非常流行的开源 UI 软件开发工具包(SDK),它允许你使用一种语言(Dart)编写一次代码,然后同时部署到 Android、iOS、Web、Mac、Linux 和 Windows 等多个平台上。
更酷的是,Flutter 不依赖原生组件,而是自己绘制界面,因此可以高度定制外观,甚至做出媲美原生性能的应用。
环境准备:搭建你的第一个 Flutter 开发环境

✅ 第一步:安装 Flutter SDK
- 前往官网:https://flutter.dev
- 点击 "Get Started"
- 根据你的操作系统(Windows / Mac / Linux)下载对应的 Flutter SDK 压缩包
- 解压后将路径添加到系统环境变量中(例如
C:\src\flutter\bin)
打开终端或命令行,运行以下命令来验证是否安装成功:
flutter doctor
如果提示缺什么,就按提示去安装缺失的依赖即可(如 Android Studio、Xcode 或模拟器支持等)。
💡 如果遇到网络问题,可以用国内镜像:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
✅ 第二步:安装编辑器
推荐使用以下两种编辑器之一:
- Android Studio + Flutter 插件
- VS Code + Flutter 插件
安装步骤(以 VS Code 为例):
- 下载安装 VS Code
- 打开后,在扩展商店搜索 “Flutter” 并安装
- 安装完成后重启 VS Code
✅ 第三步:创建你的第一个 Flutter 应用
在终端执行下面这条命令来创建一个基础项目:
flutter create hello_flutter
进入目录并运行:
cd hello_flutter
flutter run
如果你有一个连接设备(真机或模拟器/仿真器),你将会看到一个默认模板页面显示在设备上!
核心概念:最简单的语言解释关键概念
为了让你快速上手,这里我们先介绍几个最常用的概念。
🧱 Widget:Flutter 的“积木”
在 Flutter 中,一切皆是 Widget,就像搭积木一样组合起来形成用户界面。
Text("Hello")是显示文字的文本小部件Container()可以设置背景颜色、大小等属性的容器Column()和Row()控制子元素垂直排列还是水平排列
示例:
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('我的第一个应用')),
body: Center(
child: Text('你好,Flutter!'),
),
),
),
);
}
这个例子使用了以下几个基本 Widget:
MaterialApp: 使用 Material Design 风格的主题容器Scaffold: 提供标准页面结构(包含标题栏 appbar)Center: 居中对齐内容Text: 显示文本内容
⚙️ StatefulWidget 与 StatelessWidget
StatelessWidget:静态页面,数据不会变(适合展示性的页面)StatefulWidget:可变化的组件,常用于交互操作(比如按钮被点击)
示例:计数器按钮
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Home(),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
int count = 0;
void incrementCounter() {
setState(() {
count++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('计数器')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('你点击了 $count 次', style: TextStyle(fontSize: 24)),
SizedBox(height: 20),
ElevatedButton(
onPressed: incrementCounter,
child: Text('点我加一'),
),
],
),
),
);
}
}
这是一个有状态的组件,每次点击按钮都会更新页面内容。
实战项目:做一个“天气预报卡片”小应用
让我们通过一个小项目来练手 —— 创建一个简单的“天气预报卡片”。
🏗️ 功能目标
- 展示城市名和温度
- 一个刷新按钮,模拟更新温度的功能
- 适配手机屏幕布局
💻 步骤实现
Step 1:定义基础UI结构
import 'package:flutter/material.dart';
void main() => runApp(WeatherApp());
class WeatherApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: WeatherScreen(),
);
}
}
class WeatherScreen extends StatefulWidget {
@override
_WeatherScreenState createState() => _WeatherScreenState();
}
Step 2:实现主页面逻辑
class _WeatherScreenState extends State<WeatherScreen> {
String city = '北京';
int temperature = 20;
void refreshWeather() {
// 模拟获取新温度(随机值)
setState(() {
temperature = (temperature + 1) % 40; // 循环变化
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('$city 天气')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.wb_sunny, size: 80, color: Colors.orangeAccent),
SizedBox(height: 10),
Text(
'$temperature°C',
style: TextStyle(fontSize: 48, fontWeight: FontWeight.bold),
),
SizedBox(height: 20),
ElevatedButton.icon(
onPressed: refreshWeather,
icon: Icon(Icons.refresh),
label: Text('刷新天气'),
)
],
),
),
);
}
}
这个项目展示了如何使用图标、按钮、文本,并通过按钮事件修改状态值。
常见问题:新手容易踩的坑有哪些?
❓1. 我运行 flutter doctor 报错说找不到 Java?怎么办?
➡️ 请安装 JDK,建议使用 Adoptium(之前叫 AdoptOpenJDK)的版本
https://adoptium.net
然后配置环境变量 JAVA_HOME
❓2. 我运行应用的时候提示没有连接设备?
➡️ 你需要先启用一个设备:
- Android 真机:开启 USB调试模式并通过数据线连接电脑
- 或者使用 Android Studio 启动安卓模拟器
- macOS 用户可以启动 iOS 模拟器(需要安装 Xcode)
❓3. 我写完代码保存了但是没反应?
➡️ 确保你是在调试模式下运行(使用 flutter run)并且启用了热重载功能
Flutter 支持热重载,保存代码自动刷新界面,无需重新编译。
快捷键:
- VS Code:
Ctrl + S - Android Studio:
Cmd/Ctrl + S
❓4. Dart 学起来很难吗?
➡️ Dart 是专为客户端 UI 构建设计的语言,语法接近 JavaScript + Java
官方提供了丰富的文档:https://dart.dev
建议跟着实践项目学,不用死记语法,边做边查。
学习建议:下一步该学什么?
恭喜你已经完成了 Flutter 的入门学习,能自己写一个简单的小 App 了!
下面是几个进阶方向,你可以根据兴趣选择继续深入:
| 推荐方向 | 学习内容 |
|---|---|
| 📲 数据交互 | 学习 HTTP 请求、JSON 解析、使用 API 获取真实天气数据 |
| 🧠 状态管理 | 熟悉 Provider / Riverpod / Bloc 等状态管理方法 |
| 🖼 UI 设计 | 使用 GridView、Stack、TabBar 等复杂布局控件 |
| ☁️ 云端服务 | 集成 Firebase 实现登录注册、实时数据库等功能 |
| 🔐 发布应用 | 学会打包 APK/AAB、上传 Google Play/App Store |
📌 推荐资源:
- Flutter 官方文档:https://flutter.dev/docs
- DartPad 在线练习:https://dartpad.dev
- Flutter 示例 GitHub:https://github.com/flutter/samples
希望这篇教程能够带你顺利迈出 Flutter 编程的第一步 🚀
如果你喜欢,欢迎持续关注后续课程,我们将一步步带你在 Flutter 世界中打造更多实用 App!

评论 0