Flutter 基础知识
Flutter 是 Google 推出的开源 UI 开发框架,用于构建跨平台应用(iOS、Android、Web、桌面)。它使用 Dart 语言,具有高性能和丰富的组件库。
安装 Flutter 需要下载 SDK 并配置环境变量。官方推荐使用 Android Studio 或 VS Code 作为开发工具,安装对应的 Flutter 和 Dart 插件。
开发环境配置
下载 Flutter SDK 并解压到指定目录。将 Flutter 的 bin
目录添加到系统环境变量 PATH
中。运行 flutter doctor
检查依赖是否齐全,根据提示安装缺失的组件(如 Android Studio、Xcode 等)。
在 VS Code 中安装 Flutter 和 Dart 插件,提供代码补全、调试和热重载支持。Android Studio 需要安装 Flutter 插件,同时配置 Android SDK。
创建第一个 Flutter 项目
使用命令行 flutter create project_name
创建新项目。项目结构包括 lib/main.dart
(入口文件)、pubspec.yaml
(依赖管理)和平台特定代码目录。
运行 flutter run
启动应用,默认生成一个计数器示例。热重载功能允许在不重启应用的情况下实时查看代码更改效果。
Widget 基础概念
Flutter 使用 Widget 构建 UI,分为有状态(StatefulWidget)和无状态(StatelessWidget)两种。所有 UI 元素都是 Widget,通过嵌套组合实现复杂布局。
MaterialApp 是 Material Design 风格应用的根 Widget,包含主题、路由等全局配置。Scaffold 提供应用框架结构(如 AppBar、Body、FloatingActionButton)。
常用布局 Widget
Container 是通用布局 Widget,可设置尺寸、边距、装饰等。Row 和 Column 用于水平和垂直排列子 Widget,通过 mainAxisAlignment 和 crossAxisAlignment 控制对齐方式。
Stack 允许子 Widget 重叠,通过 Positioned 控制位置。ListView 和 GridView 分别用于列表和网格布局,支持滚动和动态加载。
状态管理基础
StatefulWidget 通过 setState() 方法更新 UI,适用于局部状态。数据流从上到下通过构造函数传递,子 Widget 通过回调函数通知父 Widget 状态变化。
简单的状态管理可以使用 Provider 包,通过 ChangeNotifier 和 Consumer 实现数据共享和局部刷新。BLoC 模式适合复杂应用,分离业务逻辑和 UI。
导航和路由
Navigator 管理页面堆栈,push() 和 pop() 方法实现页面跳转和返回。命名路由通过 MaterialApp 的 routes 属性配置,使用 Navigator.pushNamed() 跳转。
页面间传递数据可通过构造函数或路由设置。Hero 动画实现跨页面共享元素的平滑过渡效果。
网络请求和 JSON 解析
http 包提供基础的网络请求功能。Dio 是更强大的第三方网络库,支持拦截器、文件上传等高级功能。
JSON 数据通过 dart:convert 包的 jsonDecode() 和 jsonEncode() 方法转换。json_serializable 包可自动生成模型类的序列化代码。
常用插件示例
shared_preferences 提供简单的键值对持久化存储。path_provider 获取应用文件系统路径。image_picker 从相册或相机获取图片。
url_launcher 打开外部链接或调用系统应用。flutter_local_notifications 实现本地通知功能。sqflite 提供 SQLite 数据库支持。
调试和优化技巧
Flutter 的 DevTools 提供性能分析、布局检查等功能。debugPrint() 替代 print() 避免 Android 日志截断。assert() 在开发阶段验证条件。
性能优化包括 const Widget、ListView.builder 的 itemExtent、避免重建不必要的 Widget 等。 release 模式打包应用以启用所有优化。
发布应用流程
Android 应用需要配置签名密钥,生成 keystore 文件。在 build.gradle
中配置签名信息,运行 flutter build appbundle
生成发布包。
iOS 应用需要 Apple 开发者账号,配置证书和描述文件。使用 Xcode 归档项目并上传到 App Store Connect。填写应用元数据后提交审核。