初始化信息

This commit is contained in:
2025-10-13 18:08:02 +08:00
parent e302ebe176
commit 35a90f1635
616 changed files with 58357 additions and 25 deletions
Executable
+74
View File
@@ -0,0 +1,74 @@
您精通 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、状态管理和后端集成的最佳实践。