Appearance
第17章:Flutter 进阶技巧(提升开发效率)
17.1 Flutter 代码规范(命名规范、代码格式、组件封装)
命名规范
- 文件命名:使用小写字母和下划线(snake_case),如
home_page.dart - 类名:使用大驼峰命名法(PascalCase),如
HomePage - 方法名:使用小驼峰命名法(camelCase),如
fetchData() - 变量名:使用小驼峰命名法,如
userName - 常量名:使用全大写字母和下划线,如
MAX_COUNT
代码格式
- 使用 2 个空格进行缩进
- 每行代码长度不超过 80 个字符
- 合理使用空行分隔代码块
- 运算符两侧添加空格
- 大括号使用 K&R 风格(左大括号与语句在同一行)
组件封装
- 将重复使用的 UI 元素封装为独立组件
- 合理划分组件职责,保持组件小巧且专注
- 使用构造函数参数传递数据和回调
- 为组件添加适当的注释说明
17.2 组件封装(通用组件抽取,实现代码复用)
封装示例:自定义按钮
dart
class CustomButton extends StatelessWidget {
final String text;
final VoidCallback onPressed;
final Color color;
const CustomButton({
Key? key,
required this.text,
required this.onPressed,
this.color = Colors.blue,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
style: ElevatedButton.styleFrom(
backgroundColor: color,
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
child: Text(
text,
style: const TextStyle(fontSize: 16, color: Colors.white),
),
);
}
}封装示例:卡片组件
dart
class CustomCard extends StatelessWidget {
final Widget child;
final EdgeInsets? padding;
const CustomCard({
Key? key,
required this.child,
this.padding = const EdgeInsets.all(16),
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Card(
elevation: 4,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
child: Padding(
padding: padding!,
child: child,
),
);
}
}17.3 性能优化基础(减少重建、列表性能优化、图片缓存)
减少重建
- 使用
const构造函数创建不可变组件 - 使用
const声明常量 Widget - 合理使用
Key标识组件 - 避免在
build方法中执行耗时操作
列表性能优化
- 使用
ListView.builder构建动态列表 - 设置
itemExtent提升滚动性能 - 使用
SliverList处理大量数据 - 实现列表项缓存机制
图片缓存
- 使用
CachedNetworkImage插件缓存网络图片 - 合理设置图片缓存策略
- 预加载重要图片
- 优化图片尺寸和质量
17.4 常用第三方插件推荐(按场景分类)
网络请求
- dio:功能强大的 HTTP 客户端,支持拦截器、请求取消等
- http:Flutter 官方推荐的 HTTP 客户端
本地存储
- shared_preferences:轻量键值对存储
- sqflite:SQLite 本地数据库
- hive:高性能 NoSQL 本地存储
UI组件
- flutter_screenutil:屏幕适配工具
- flutter_swiper:轮播图组件
- flutter_easyloading:加载动画
- fluttertoast:Toast 提示
- intl:国际化支持
状态管理
- provider:官方推荐的状态管理库
- getx:轻量级状态管理、路由管理、依赖注入
- bloc:基于流的状态管理
其他工具
- permission_handler:权限管理
- image_picker:图片选择器
- path_provider:文件路径管理
- url_launcher:URL 启动器
17.5 Flutter 版本升级与兼容性处理
版本升级步骤
- 查看 Flutter 官方发布说明
- 运行
flutter upgrade命令 - 更新项目依赖
- 处理 API 变更
兼容性处理
- 使用
if (Platform.isAndroid)等平台判断 - 使用
dart:io库处理平台差异 - 为不同平台提供不同实现
- 测试不同版本的 Flutter SDK
依赖管理
- 在
pubspec.yaml中指定依赖版本范围 - 使用
flutter pub outdated检查过时依赖 - 定期更新依赖包
- 测试依赖更新后的兼容性
