pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/AmosHuKe/Mood-Example

link crossorigen="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-8522af645b000615.css" /> GitHub - AmosHuKe/Mood-Example: 🐦 Flutter 3 心情记录 样例工程 - 国际化 i18n、uni 小程序、深色模式、多主题、本地数据管理、路由管理、状态管理、无障碍(Semantics)、异步 FFI、集成测试、图表统计、Excel 导入导出、游戏… · GitHub
Skip to content

AmosHuKe/Mood-Example

Preview


Logo Mood Example

Sparkline

Mood-Example v1.9.12 Flutter v3.41.4 Dart v3.11.1 BSD-3-Clause License


🐦 简介

情绪记录 样例工程
管理自己的情绪,记录当下所见所想,以及其他实验室功能(不定期更新一些功能)
运用 Flutter 的工程,主要目的是学习、实践。

Note

注意:由于是学习实践工程,所以重点在于学习,许多业务逻辑可能并不符合现实。
Emoji 因设备缘故,会存在不同样式。

🌏 相关网站

Flutter 官网(中文):https://flutter.cn/
Flutter 官网(英文):https://flutter.dev/
Packages (原始站点) :https://pub.dev/
Packages (中国镜像) :https://pub-web.flutter-io.cn/

⭐ 功能

  • 国际化 i18n l10n
  • 多主题
  • 深色模式
  • 本地数据管理
  • 路由管理
  • 状态管理
  • 集成测试
  • 情绪记录
  • 图表统计
  • Excel 导入导出
  • 无障碍支持 (Semantics)
  • Web 访问
  • 解锁认证(锁屏密码、生物特征识别)
  • 本地通知
  • 动画
  • 实验室(占用 APP 大部分包体积,源码位置查看项目结构)
    • uniapp 小程序(UniMPSDK v4.75)
    • 游戏合集(Bonfire, Flame)
    • 3D 城市(obj 格式)
    • FFI 异步调用 C/C++
      ……

🛠️ 开发环境

🛠️ 基本环境

Windows:

[√] Flutter (Channel stable, 3.41.4, on Microsoft Windows)
[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0)

macOS:

[✓] Flutter (Channel stable, 3.41.4, on macOS)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0)

🛠️ i18n l10n

官方国际化教程:中文站 | 英文站

├── lib/
│   ├── l10n/                   # l10n 语言包
│   │   ├── gen/                # l10n 语言包生成的文件夹(不用编码,自动生成)
│   │   └── app_zh_CN.arb       # 如 简体中文:zh_CN
│   ├── shared/
│   │   ├── config/
│   │   │   └── language.dart   # 语言配置
├── l10n.yaml                   # l10n 配置
......

🎉 启动

开发环境 支持的情况下

# 克隆项目
$ git clone https://github.com/AmosHuKe/Mood-Example.git

# 获取依赖
$ flutter pub get

# 启动项目或相关 IDE 启动
$ flutter run

# 更多启动模式
$ flutter run --debug/release/profile/test

# 清理构建缓存
$ flutter clean

# 集成测试
$ flutter test integration_test/app_test.dart --dart-define=test_mode=true

📑 项目结构

├── android/                                        # Android 工程文件 
│   ├── app/
│   │   ├── libs/                                   # 包含 UniMPSDK 依赖库
│   │   ├── src/
│   │   │   ├── main/
│   │   │   │   ├── assets/                         # 包含 UniMPSDK 内容
│   │   │   │   │   ├── apps/                       # 包含 UniMPSDK 的 uniapp 小程序
│   │   │   │   │   └── data/                       # 包含 UniMPSDK 内容
│   │   │   │   ├── kotlin/
│   │   │   │   │   ├── com/
│   │   │   │   │   │   ├── example/
│   │   │   │   │   │   │   ├── moodexample/
│   │   └── └── └── └── └── └── └── MainActivity.kt # Flutter 的 Android 默认入口
│   └── CMakeLists.txt                              # CMake(目前编译 FFI 需要的文件)
├── assets/                                         # 静态资源文件
├── build/                                          # 编译或运行后产物
├── integration_test/                               # 集成测试
│   └── app_test.dart                               # 集成测试入口 用例
├── ios/                                            # iOS 工程文件
│   ├── Classes/                                    # Classes(目前存放 FFI 相关文件)
│   │   ├── include/
│   │   │   └── dart_native_api/                    # DartNativeAPI 接口库
│   │   └── ffi.cpp                                 # FFI 逻辑测试
│   ├── Runner/                                     # Runner
│   │   ├── UniMPSDK/                               # 包含 UniMPSDK 内容
│   │   │   ├── Apps/                               # 包含 UniMPSDK 的 uniapp 小程序
│   │   │   └── Core/                               # 包含 UniMPSDK 依赖库
│   │   ├── AppDelegate.swift                       # Flutter 的 iOS 默认入口
│   │   ├── Info.plist                              # 项目配置
│   │   └── Runner-Bridging-Header.h                # 依赖库引入
│   └── Podfile                                     # 依赖配置
├── lib/                                            # 工程相关文件(主要编码)
│   ├── data/                                       # 数据层
│   │   ├── dao/                                    # 原始数据访问操作
│   │   ├── database/                               # 数据基础设施
│   │   │   ├── tables/                             # sqflite 数据表配置
│   │   │   ├── database.dart                       # sqflite 数据库相关
│   │   │   └── shared_preferences_db.dart          # shared_preferences 数据相关
│   │   └── repositories/                           # 仓库实现层(协调业务逻辑)
│   ├── domain/                                     # 领域层(业务抽象)
│   │   ├── models/                                 # 数据模型
│   │   ├── repositories/                           # 仓库抽象层(抽象业务接口)
│   │   └── use_cases/                              # 业务用例
│   ├── features/                                   # 视图
│   │   ├── home/                                   # 首页
│   │   ├── laboratory/                             # 实验室
│   │   │   ├── views/
│   │   │   │   ├── 3d/                             # 3D 城市
│   │   │   │   ├── ffi/                            # FFI 测试
│   │   │   │   ├── game/                           # 游戏合集
│   │   │   │   ├── tilt_example/                   # 倾斜视差卡片
│   │   │   │   ├── unimp_miniapps/                 # uniapp 小程序
│   │   │   └── └── laboratory.dart                 # 实验室首页
│   │   ├── mood/                                   # 心情页
│   │   ├── onboarding/                             # 用户引导页
│   │   ├── settings/                               # 侧边设置栏
│   │   ├── statistic/                              # 统计页
│   │   ├── web_view/                               # WebView
│   │   └── main_screen.dart                        # 主屏幕
│   ├── l10n/                                       # l10n 语言包
│   │   └── gen/                                    # l10n 语言包生成的文件夹(不用编码,自动生成)
│   ├── shared/                                     # 共享相关
│   │   ├── config/                                 # 配置
│   │   │   ├── dependencies.dart                   # 依赖注入
│   │   │   ├── language.dart                       # 语言配置
│   │   │   └── multiple_theme_mode.dart            # 多主题配置
│   │   ├── providers/                              # 状态管理
│   │   ├── themes/                                 # 主题相关
│   │   │   ├── multiple_theme_mode/                # 多主题配色
│   │   │   │   └── theme_default.dart              # 多主题默认配色
│   │   │   └── app_theme.dart                      # 主题基础
│   │   └── utils/                                  # 工具相关
│   ├── widgets/                                    # 通用 Widget 相关
│   ├── application.dart                            # 主应用
│   ├── init.dart                                   # 初始化相关
│   ├── main_local.dart                             # 主应用入口(本地数据依赖注入)
│   ├── main.dart                                   # 主应用入口
│   └── router.dart                                 # 路由管理
├── .gitignore                                      # Git 提交仓库忽略文件配置
├── .metadata                                       # 当前 workspace 配置记录
├── analysis_options.yaml                           # Dart 代码规范/风格配置
├── l10n.yaml                                       # l10n 配置
├── pubspec.lock                                    # 依赖生成的文件(锁定依赖版本等)
└── pubspec.yaml                                    # 核心配置文件(项目配置、依赖等)

🤔️ 常见问题

Q: 小程序无法使用视频、地图等

点击展开

这是因为项目中只集成了核心基础库(因为仅作为集成演示),
许多功能库(比如视频、地图、分享、支付、登录、直播 pusher 等 SDK)没有集成,

如果你需要这些功能就需要自行集成。

比如在 iOS 中集成,需要先下载 UniMP_iOS_SDK
然后你会看见如下结构:

├── UniMPSDK/
│   ├── Core/         # 核心库
│   ├── Features/     # 非核心功能库
......

之后根据以下两个官方教程进行集成:

Q: 在 APP 关闭后,通知失效

点击展开

在确认应用开启了通知的情况下,关闭 APP 后依旧无法通知。
这是因为部分品牌 Android 默认使用了电池节能策略。

解决:关闭应用的电池节能策略,并打开自启动

📦 Packages

感谢开源

Packages License
bonfire MIT License
card_swiper MIT License
ditredi MIT License
excel MIT License
flame MIT License
file_picker MIT License
flutter_slidable MIT License
flutter_zoom_drawer MIT License
flutter_screen_lock MIT License
flutter_smart_dialog MIT License
flutter_tilt MIT License
provider MIT License
remixicon MIT License
awesome_notifications Apache-2.0 License
table_calendar Apache-2.0 License
sqflite BSD-2-Clause License
fl_chart BSD-3-Clause License
flutter_lints BSD-3-Clause License
intl BSD-3-Clause License
local_auth BSD-3-Clause License
logging BSD-3-Clause License
go_router BSD-3-Clause License
path_provider BSD-3-Clause License
share_plus BSD-3-Clause License
shared_preferences BSD-3-Clause License
webview_flutter BSD-3-Clause License

🖼️ Illustration

Illustration by Tanya Krasutska from Ouch!

🎨 Design

Design by Mindfulness Concept App from Bogusław Podhalicz.

📄 License

BSD-3-Clause License
Open sourced under the BSD-3-Clause license.
根据 BSD-3-Clause 许可证开源。
© AmosHuKe

About

🐦 Flutter 3 心情记录 样例工程 - 国际化 i18n、uni 小程序、深色模式、多主题、本地数据管理、路由管理、状态管理、无障碍(Semantics)、异步 FFI、集成测试、图表统计、Excel 导入导出、游戏…

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy