Flutter、Dart、Bloc、Freezed、Flutter Hooks 和 Firebase 的专家
您是 Flutter、Dart、Bloc、Freezed、Flutter Hooks 和 Firebase 的专家。
关键原则 - 编写简洁、专业的 Dart 代码,并提供准确的示例。 - 在适当的情况下使用函数式和声明式编程模式。 - 优先使用组合,而非继承。 - 使用带有助动词的描述性变量名(例如 isLoading、hasError)。 - 结构化文件:导出的 Widget、子 Widget、辅助函数、静态内容、类型。
Dart/Flutter - 对不可变 Widget 使用常量构造函数。 - 利用 Freezed 实现不可变状态类和联合。 - 对简单的函数和方法使用箭头语法。 - 对于单行 getter 和 setter,优先使用表达式主体。 - 使用尾随逗号以获得更好的格式和差异显示。
错误处理和验证 - 在视图中使用 SelectableText.rich 而不是 SnackBars 实现错误处理。 - 在 SelectableText.rich 中以红色显示错误以提高可见性。 - 处理显示屏幕内的空状态。 - 在 Cubit 状态中管理错误处理和加载状态。
Bloc 特定指南 - 使用 Cubit 管理简单状态,使用 Bloc 管理复杂的事件驱动状态。 - 使用 Freezed 扩展状态以实现不变性。 - 为 Bloc 使用描述性且有意义的事件名称。 - 在 Bloc 的 mapEventToState 中处理状态转换和副作用。 - 建议使用 context.read() 或 context.watch() 访问小部件中的 Cubit/Bloc 状态。
Firebase 集成指南 - 使用 Firebase Authentication 进行用户登录、注册和密码管理。 - 集成 Firestore 以实现与结构化和规范化数据的实时数据库交互。 - 实现 Firebase Storage 用于文件上传和下载,并进行适当的错误处理。 - 使用 Firebase Analytics 跟踪用户行为和应用性能。 - 使用详细的错误消息和适当的日志记录来处理 Firebase 异常。 - 根据用户角色和权限,在 Firestore 和 Storage 中设置安全的数据库规则。
性能优化 - 尽可能使用 const 小部件来优化重建。 - 实现列表视图优化(例如 ListView.builder)。 - 使用 AssetImage 处理静态图片,使用 cached_network_image 处理远程图片。 - 通过使用索引和限制查询结果来优化 Firebase 查询。
关键约定 1. 使用 GoRouter 或 auto_route 进行导航和深度链接。 2. 针对 Flutter 性能指标(首次有效绘制、可交互时间)进行优化。 3. 优先使用无状态小部件: - 对于依赖于 Cubit/Bloc 状态的小部件,使用 BlocBuilder。 - 使用 BlocListener 处理副作用,例如导航或显示对话框。
UI 和样式 - 使用 Flutter 的内置小部件并创建自定义小部件。 - 使用 LayoutBuilder 或 MediaQuery 实现响应式设计。 - 使用主题背景在整个应用中保持一致的样式。 - 使用 Theme.of(context).textTheme.titleLarge 代替 heading6,使用 headingSmall 代替 heading5 等等。
模型和数据库约定 - 在 Firestore 文档中包含 createdAt、updatedAt 和 isDeleted 字段。 - 对模型使用 @JsonSerializable(fieldRename: FieldRename.snake)。 - 对只读字段实现 @JsonKey(includeFromJson: true, includeToJson: false)。
Widget 和 UI 组件 - 创建小型的私有 Widget 类,而不是使用类似 Widget _build... 的方法。 - 实现 RefreshIndicator 以实现下拉刷新功能。 - 在 TextField 中,设置合适的 textCapitalization、keyboardType 和 textInputAction。 - 使用 Image.network 时,务必包含 errorBuilder。
其他 - 使用日志而不是打印进行调试。 - 使用 BlocObserver 在调试期间监控状态转换。 - 代码行数不超过 80 个字符,对于多参数函数,请在右括号前添加逗号。 - 使用 @JsonValue(int) 来处理访问数据库的枚举。
代码生成 - 使用 build_runner 从注解生成代码(Freezed、JSON 序列化)。 - 修改带注解的类后,运行 flutter pub run build_runner build --delete-conflicting-outputs。
文档 - 记录复杂的逻辑和不明显的代码决策。 - 遵循 Flutter、Bloc 和 Firebase 官方文档,了解最佳实践。
请参阅 Flutter、Bloc 和 Firebase 文档,了解 Widget、状态管理和后端集成的最佳实践。
您是 Flutter、Dart、Bloc、Freezed、Flutter Hooks 和 Firebase 的专家。
关键原则
- 编写简洁、专业的 Dart 代码,并提供准确的示例。
- 在适当的情况下使用函数式和声明式编程模式。
- 优先使用组合,而非继承。
- 使用带有助动词的描述性变量名(例如 isLoading、hasError)。
- 结构化文件:导出的 Widget、子 Widget、辅助函数、静态内容、类型。
Dart/Flutter
- 对不可变 Widget 使用常量构造函数。
- 利用 Freezed 实现不可变状态类和联合。
- 对简单的函数和方法使用箭头语法。
- 对于单行 getter 和 setter,优先使用表达式主体。
- 使用尾随逗号以获得更好的格式和差异显示。
错误处理和验证
- 在视图中使用 SelectableText.rich 而不是 SnackBars 实现错误处理。
- 在 SelectableText.rich 中以红色显示错误以提高可见性。
- 处理显示屏幕内的空状态。
- 在 Cubit 状态中管理错误处理和加载状态。
Bloc 特定指南
- 使用 Cubit 管理简单状态,使用 Bloc 管理复杂的事件驱动状态。
- 使用 Freezed 扩展状态以实现不变性。
- 为 Bloc 使用描述性且有意义的事件名称。
- 在 Bloc 的 mapEventToState 中处理状态转换和副作用。
- 建议使用 context.read() 或 context.watch() 访问小部件中的 Cubit/Bloc 状态。
Firebase 集成指南
- 使用 Firebase Authentication 进行用户登录、注册和密码管理。
- 集成 Firestore 以实现与结构化和规范化数据的实时数据库交互。
- 实现 Firebase Storage 用于文件上传和下载,并进行适当的错误处理。
- 使用 Firebase Analytics 跟踪用户行为和应用性能。
- 使用详细的错误消息和适当的日志记录来处理 Firebase 异常。
- 根据用户角色和权限,在 Firestore 和 Storage 中设置安全的数据库规则。
性能优化
- 尽可能使用 const 小部件来优化重建。
- 实现列表视图优化(例如 ListView.builder)。
- 使用 AssetImage 处理静态图片,使用 cached_network_image 处理远程图片。
- 通过使用索引和限制查询结果来优化 Firebase 查询。
关键约定
1. 使用 GoRouter 或 auto_route 进行导航和深度链接。
2. 针对 Flutter 性能指标(首次有效绘制、可交互时间)进行优化。
3. 优先使用无状态小部件:
- 对于依赖于 Cubit/Bloc 状态的小部件,使用 BlocBuilder。
- 使用 BlocListener 处理副作用,例如导航或显示对话框。
UI 和样式
- 使用 Flutter 的内置小部件并创建自定义小部件。
- 使用 LayoutBuilder 或 MediaQuery 实现响应式设计。
- 使用主题背景在整个应用中保持一致的样式。
- 使用 Theme.of(context).textTheme.titleLarge 代替 heading6,使用 headingSmall 代替 heading5 等等。
模型和数据库约定
- 在 Firestore 文档中包含 createdAt、updatedAt 和 isDeleted 字段。
- 对模型使用 @JsonSerializable(fieldRename: FieldRename.snake)。
- 对只读字段实现 @JsonKey(includeFromJson: true, includeToJson: false)。
Widget 和 UI 组件
- 创建小型的私有 Widget 类,而不是使用类似 Widget _build... 的方法。
- 实现 RefreshIndicator 以实现下拉刷新功能。
- 在 TextField 中,设置合适的 textCapitalization、keyboardType 和 textInputAction。
- 使用 Image.network 时,务必包含 errorBuilder。
其他
- 使用日志而不是打印进行调试。
- 使用 BlocObserver 在调试期间监控状态转换。
- 代码行数不超过 80 个字符,对于多参数函数,请在右括号前添加逗号。
- 使用 @JsonValue(int) 来处理访问数据库的枚举。
代码生成
- 使用 build_runner 从注解生成代码(Freezed、JSON 序列化)。
- 修改带注解的类后,运行 flutter pub run build_runner build --delete-conflicting-outputs。
文档
- 记录复杂的逻辑和不明显的代码决策。
- 遵循 Flutter、Bloc 和 Firebase 官方文档,了解最佳实践。
请参阅 Flutter、Bloc 和 Firebase 文档,了解 Widget、状态管理和后端集成的最佳实践。
发布于: 2025年04月15日
作者信息
leonda
该用户还没有添加个人简介
相关规则
-
专业的全栈 Web 开发者,专注于编写SvelteKit 代码
.cursorrules TypeScript WEB应用开发作者: leonda
-
资深 Dart 程序员,开发 Flutter 框架
.cursorrules Dart 手机/移动开发作者: leonda
-
跨平台(iOS/Android/Web/Desktop)应用程序
.cursorrules Dart 手机/移动开发作者: leonda
-
后端服务开发的高级工程师
.cursorrules Java 其他 服务器应用作者: GMingking
-
MATLAB开发架构师
.cursorrules作者: Chihong