跨平台(iOS/Android/Web/Desktop)应用程序
您精通 Flutter、Dart、Riverpod、Freezed、Flutter Hooks 和 Supabase。
关键原则 - 编写简洁、专业的 Dart 代码,并提供准确的示例。 - 在适当的情况下使用函数式和声明式编程模式。 - 优先使用组合,而非继承。 - 使用带有助动词的描述性变量名(例如 isLoading、hasError)。 - 结构化文件:导出的 Widget、子 Widget、辅助函数、静态内容、类型。
Dart/Flutter - 对不可变 Widget 使用常量构造函数。 - 利用 Freezed 实现不可变状态类和联合。 - 对简单的函数和方法使用箭头语法。 - 对于单行 getter 和 setter,优先使用表达式主体。 - 使用尾随逗号以获得更好的格式和差异显示。
错误处理和验证 - 在视图中使用 SelectableText.rich 而不是 SnackBars 实现错误处理。 - 在 SelectableText.rich 中用红色显示错误以提高可见性。 - 处理显示屏幕内的空状态。 - 使用 AsyncValue 进行正确的错误处理和加载状态。
Riverpod 特定指南 - 使用 @riverpod 注解生成提供程序。 - 优先使用 AsyncNotifierProvider 和 NotifierProvider,而不是 StateProvider。 - 避免使用 StateProvider、StateNotifierProvider 和 ChangeNotifierProvider。 - 使用 ref.invalidate() 手动触发提供程序更新。 - 在处理小部件时,实现正确的异步操作取消机制。
性能优化 - 尽可能使用 const 小部件来优化重建。 - 实现列表视图优化(例如 ListView.builder)。 - 使用 AssetImage 处理静态图片,使用 cached_network_image 处理远程图片。 - 为 Supabase 操作(包括网络错误)实现正确的错误处理。
关键约定 1. 使用 GoRouter 或 auto_route 进行导航和深度链接。 2. 针对 Flutter 性能指标(首次有效绘制、可交互时间)进行优化。 3. 优先使用无状态 Widget: - 对于状态相关的 Widget,结合使用 ConsumerWidget 和 Riverpod。 - 结合使用 Riverpod 和 Flutter Hooks 时,使用 HookConsumerWidget。
UI 和样式 - 使用 Flutter 内置 Widget 并创建自定义 Widget。 - 使用 LayoutBuilder 或 MediaQuery 实现响应式设计。 - 使用主题背景,确保整个应用的样式一致。 - 使用 Theme.of(context).textTheme.titleLarge 代替 heading6,使用 headingSmall 代替 heading5 等。
模型和数据库约定 - 在数据库表中包含 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。
其他 - 使用 log 而不是 print 进行调试。 - 适当时使用 Flutter Hooks / Riverpod Hooks。 - 保持每行不超过 80 个字符,对于多参数函数,请在右括号前添加逗号。 - 使用 @JsonValue(int) 来处理需要访问数据库的枚举。
代码生成 - 使用 build_runner 从注解(Freezed、Riverpod、JSON 序列化)生成代码。 - 修改注解类后,运行“flutter pub run build_runner build --delete-conflicting-outputs”。
文档 - 记录复杂的逻辑和难以理解的代码决策。 - 遵循 Flutter、Riverpod 和 Supabase 官方文档,了解最佳实践。
请参阅 Flutter、Riverpod 和 Supabase 文档,了解 Widget、状态管理和后端集成的最佳实践。
您精通 Flutter、Dart、Riverpod、Freezed、Flutter Hooks 和 Supabase。
关键原则
- 编写简洁、专业的 Dart 代码,并提供准确的示例。
- 在适当的情况下使用函数式和声明式编程模式。
- 优先使用组合,而非继承。
- 使用带有助动词的描述性变量名(例如 isLoading、hasError)。
- 结构化文件:导出的 Widget、子 Widget、辅助函数、静态内容、类型。
Dart/Flutter
- 对不可变 Widget 使用常量构造函数。
- 利用 Freezed 实现不可变状态类和联合。
- 对简单的函数和方法使用箭头语法。
- 对于单行 getter 和 setter,优先使用表达式主体。
- 使用尾随逗号以获得更好的格式和差异显示。
错误处理和验证
- 在视图中使用 SelectableText.rich 而不是 SnackBars 实现错误处理。
- 在 SelectableText.rich 中用红色显示错误以提高可见性。
- 处理显示屏幕内的空状态。
- 使用 AsyncValue 进行正确的错误处理和加载状态。
Riverpod 特定指南
- 使用 @riverpod 注解生成提供程序。
- 优先使用 AsyncNotifierProvider 和 NotifierProvider,而不是 StateProvider。
- 避免使用 StateProvider、StateNotifierProvider 和 ChangeNotifierProvider。
- 使用 ref.invalidate() 手动触发提供程序更新。
- 在处理小部件时,实现正确的异步操作取消机制。
性能优化
- 尽可能使用 const 小部件来优化重建。
- 实现列表视图优化(例如 ListView.builder)。
- 使用 AssetImage 处理静态图片,使用 cached_network_image 处理远程图片。
- 为 Supabase 操作(包括网络错误)实现正确的错误处理。
关键约定
1. 使用 GoRouter 或 auto_route 进行导航和深度链接。
2. 针对 Flutter 性能指标(首次有效绘制、可交互时间)进行优化。
3. 优先使用无状态 Widget:
- 对于状态相关的 Widget,结合使用 ConsumerWidget 和 Riverpod。
- 结合使用 Riverpod 和 Flutter Hooks 时,使用 HookConsumerWidget。
UI 和样式
- 使用 Flutter 内置 Widget 并创建自定义 Widget。
- 使用 LayoutBuilder 或 MediaQuery 实现响应式设计。
- 使用主题背景,确保整个应用的样式一致。
- 使用 Theme.of(context).textTheme.titleLarge 代替 heading6,使用 headingSmall 代替 heading5 等。
模型和数据库约定
- 在数据库表中包含 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。
其他
- 使用 log 而不是 print 进行调试。
- 适当时使用 Flutter Hooks / Riverpod Hooks。
- 保持每行不超过 80 个字符,对于多参数函数,请在右括号前添加逗号。
- 使用 @JsonValue(int) 来处理需要访问数据库的枚举。
代码生成
- 使用 build_runner 从注解(Freezed、Riverpod、JSON 序列化)生成代码。
- 修改注解类后,运行“flutter pub run build_runner build --delete-conflicting-outputs”。
文档
- 记录复杂的逻辑和难以理解的代码决策。
- 遵循 Flutter、Riverpod 和 Supabase 官方文档,了解最佳实践。
请参阅 Flutter、Riverpod 和 Supabase 文档,了解 Widget、状态管理和后端集成的最佳实践。
发布于: 2025年04月15日
作者信息
leonda
该用户还没有添加个人简介
相关规则
-
专业的全栈 Web 开发者,专注于编写SvelteKit 代码
.cursorrules TypeScript WEB应用开发作者: leonda
-
Flutter、Dart、Bloc、Freezed、Flutter Hooks 和 Firebase 的专家
.cursorrules Dart 手机/移动开发作者: leonda
-
资深 Dart 程序员,开发 Flutter 框架
.cursorrules Dart 手机/移动开发作者: leonda
-
后端服务开发的高级工程师
.cursorrules Java 其他 服务器应用作者: GMingking
-
MATLAB开发架构师
.cursorrules作者: Chihong