first commit
This commit is contained in:
185
GOOGLE_FONTS_SETUP.md
Normal file
185
GOOGLE_FONTS_SETUP.md
Normal 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
|
||||
Reference in New Issue
Block a user