为什么选择Suncheck
你一天晒太阳的时间有多少?
在特殊时期,更感到忧郁或无精打采,可能是因为没有摄取足够的阳光。每天只要15分钟的阳光照射,就能分泌足够的血清素,足以预防忧郁症。如果你能知道自己一天接受了多少阳光的照射,是不是就能更主动地管理自己的情绪呢?来Suncheck,记录你的阳光日记,创造更清新、更愉悦的每一天吧 ?
主要功能
1. 记录阳光
通过主屏幕的圆形按钮,可以记录自己接受阳光照射的时间。每经过15分钟,按钮的颜色会变得更深。
当检测到行走动作,或应用打开15分钟后,会发送提醒通知。
2. 查看记录
通过日历界面,可以查看自己的月度阳光日记,点击每个圆形按钮,可以看到当天接受的阳光照射量、位置、维生素D和电量。
3. 我当前位置的实时天气
可以查看自己当前位置的实时天气。
实现
无服务器跨平台移动应用
- 一个代码库即可在Android和iOS上发布,维护和更新都更简单。
- 无服务器架构比传统的客户端-服务器架构更具可扩展性、灵活性和成本效益。
- 为了实现跨平台性和成本效益,我们没有使用独立的数据库服务器,而是使用了SQLite在本地实现了一个简单的数据库。
| 框架 | Client | 数据库 | 外部API |
|---|---|---|---|
| Flutter | ios | SQLite | Open Weather API |
| android | SharedPreference |
Flutter / Dart 版本
Flutter 2.0.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision adc687823a (3 months ago) • 2021-04-16 09:40:20 -0700
Engine • revision b09f014e96
Tools • Dart 2.12.3
使用的Flutter依赖项列表
provider: ^4.3.2+3
weather: ^2.0.1
geolocator: ^7.2.0+1
sqflite: ^2.0.0+3
path: ^1.8.0
path_provider: ^2.0.2
intl: ^0.17.0
shared_preferences: ^2.0.6
geocoder: ^0.2.1
avatar_glow: ^2.0.1
dotted_line: ^3.0.0
jiffy: ^4.1.0
flutter_local_notifications: ^5.0.0+1
timezone: ^0.7.0
阳光记录模型
<div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="
class Record {
Record({int id, DateTime date, int energy, String location}) {
this.id = id;
this.date = DateTime.parse(DateFormat('yyyy-MM-dd 00:00:00.000').format(date));
this.energy = energy;
this.location = location;
}
Map toMap() {
return {‘id’: id, ‘date’: date.toString(), ‘energy’: energy, ‘location’: location};
}
“>
class Record {
Record({int id, DateTime date, int energy, String location}) {
this.id = id;
this.date = DateTime.parse(DateFormat('yyyy-MM-dd 00:00:00.000').format(date));
this.energy = energy;
this.location = location;
}
Map<String, dynamic> toMap() {
return {'id': id, 'date': date.toString(), 'energy': energy, 'location': location};
}



