Skip to content

第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 版本升级与兼容性处理

版本升级步骤

  1. 查看 Flutter 官方发布说明
  2. 运行 flutter upgrade 命令
  3. 更新项目依赖
  4. 处理 API 变更

兼容性处理

  • 使用 if (Platform.isAndroid) 等平台判断
  • 使用 dart:io 库处理平台差异
  • 为不同平台提供不同实现
  • 测试不同版本的 Flutter SDK

依赖管理

  • pubspec.yaml 中指定依赖版本范围
  • 使用 flutter pub outdated 检查过时依赖
  • 定期更新依赖包
  • 测试依赖更新后的兼容性

© 2026 编程马·菜鸟教程 版权所有