first commit

This commit is contained in:
ytc1012
2025-11-22 18:17:35 +08:00
commit d427916c6a
169 changed files with 15241 additions and 0 deletions

185
GOOGLE_FONTS_SETUP.md Normal file
View File

@@ -0,0 +1,185 @@
# 🎨 Google Fonts (Nunito) - 实现总结
**日期**: 2025-11-22
**状态**: ✅ 95% 完成需要清理const关键字
---
## ✅ 已完成
### 1. 添加 Google Fonts 依赖
```yaml
dependencies:
google_fonts: ^6.1.0 # Google Fonts (Nunito)
```
✅ 已安装并可用
### 2. 更新主题文件
-`app_text_styles.dart` - 所有样式使用 `GoogleFonts.nunito()`
-`app_theme.dart` - 默认字体族使用 Google Fonts
### 3. 优点
- 自动从 Google 服务器下载字体
- 无需手动管理字体文件
- 支持所有字重Light, Regular, SemiBold, Bold, ExtraBold
- 跨平台一致性
---
## ⚠️ 待修复
### 编译错误const 关键字冲突
**问题**Google Fonts 返回的 TextStyle 不是 const但代码中使用了 `const Text(...style: AppTextStyles...)`
**错误示例**:
```dart
const Text(
'FocusBuddy',
style: AppTextStyles.appTitle, // ❌ appTitle 不是 const
)
```
**修复方法**:删除 const 关键字
```dart
Text(
'FocusBuddy',
style: AppTextStyles.appTitle, // ✅ 正确
)
```
### 需要修复的文件和行数
根据编译器输出,以下位置仍需修复:
#### home_screen.dart
- [ ] 第 49 行 - `const Text('FocusBuddy', style: AppTextStyles.appTitle)`
- [ ] 第 115 行 - `const Text("Tap 'I got distracted'...", style: AppTextStyles.helperText)`
#### history_screen.dart
- [ ] 第 86 行 - `const Text('No focus sessions yet', style: AppTextStyles.headline)`
- [ ] 第 92 行 - `const Text('Start your first session...', style: AppTextStyles.helperText)`
#### settings_screen.dart
- [ ] 第 63 行 - `const Padding(...child: Text(...style: AppTextStyles.bodyText))`
- [ ] 第 84 行 - `title: const Text('Privacy Policy', style: AppTextStyles.bodyText)`
- [ ] 第 100 行 - `title: const Text('About FocusBuddy', style: AppTextStyles.bodyText)`
- [ ] 第 251 行 - `content: const SingleChildScrollView(...style: AppTextStyles.bodyText)`
- [ ] 第 276 行 - `content: const SingleChildScrollView(...style: AppTextStyles.bodyText)`
#### complete_screen.dart
- [ ] 第 46 行 - `const Text('You focused for', style: AppTextStyles.headline)`
---
## 🛠️ 快速修复脚本
### 手动修复步骤
1. 打开每个文件
2. 搜索 `const Text(``const Padding(`
3. 如果该 Widget 使用了 `AppTextStyles.*`,删除 `const` 关键字
4. 保存文件
### 或使用正则表达式查找替换VSCode
**查找**:
```regex
const (Text|Padding)\(([^)]*style: AppTextStyles\.)
```
**替换**:
```
$1($2
```
---
## 🎯 测试方法
修复完成后:
```bash
# 1. 清理构建缓存
flutter clean
# 2. 重新获取依赖
flutter pub get
# 3. 运行应用
flutter run -d edge
# 4. 验证字体加载
# 打开浏览器开发者工具F12
# 在 Network 标签查看是否有 Nunito 字体请求
```
---
## 📊 字体配置详情
### 使用的字体变体
| 字重 | 用途 | 代码位置 |
|------|------|----------|
| Light (300) | Helper text | `helperText` |
| Regular (400) | Body text, quotes | `bodyText`, `encouragementQuote` |
| SemiBold (600) | Headlines, buttons | `headline`, `buttonText` |
| Bold (700) | App title, large numbers | `appTitle`, `largeNumber` |
| ExtraBold (800) | Timer display | `timerDisplay` |
### Google Fonts CDN
字体自动从以下来源加载:
```
https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;600;700;800
```
首次加载后会缓存到本地,后续离线也可用。
---
## 🚀 完成清单
- [x] 添加 google_fonts 依赖
- [x] 更新 app_text_styles.dart
- [x] 更新 app_theme.dart
- [ ] 删除所有const关键字剩余10处
- [ ] 测试字体渲染
- [ ] 验证所有字重正确显示
---
## 💡 备用方案
如果 Google Fonts 在某些环境无法使用:
### 方案 A: 手动下载字体
1. 从 Google Fonts 下载 Nunito
2. 放到 `assets/fonts/` 目录
3. 在 pubspec.yaml 配置
4. 回退到硬编码 `fontFamily: 'Nunito'`
### 方案 B: 使用系统字体
1. 删除所有 `fontFamily` 设置
2. 依赖系统默认字体
3. 跨平台一致性降低,但功能正常
---
## 📝 当前状态
```
Google Fonts 集成: ████████░░ 95%
```
**剩余工作**:删除 10 处 const 关键字约5分钟
**预期完成时间**:今天
---
**文档版本**: 1.0
**最后更新**: 2025-11-22