2023-11-28 10:44:58 +08:00
// ignore_for_file: unnecessary_overrides
import ' dart:async ' ;
2023-11-28 20:25:09 +08:00
import ' package:flutter/scheduler.dart ' ;
2023-11-28 10:44:58 +08:00
import ' package:flutter_guid/flutter_guid.dart ' ;
import ' package:dreampad/app/models/models.dart ' ;
import ' package:dreampad/app/routes/app_pages.dart ' ;
import ' package:flustars_flutter3/flustars_flutter3.dart ' ;
import ' package:flutter/widgets.dart ' ;
import ' package:flutter_smart_dialog/flutter_smart_dialog.dart ' ;
import ' package:get/get.dart ' ;
import ' package:dreampad/app/shared/shared.dart ' ;
import ' ../models/chat_msg_model.dart ' ;
import ' ../models/explore_app_model.dart ' ;
2023-11-30 00:08:39 +08:00
import ' ../models/knowledge_point_dialogue_model.dart ' ;
2023-11-28 10:44:58 +08:00
import ' ../models/knowledge_point_model.dart ' ;
import ' ../providers/home_provider.dart ' ;
import ' ../widgets/first_time_dialog.dart ' ;
class HomeController extends GetxController {
final HomeProvider homeProvider ;
2023-11-28 20:25:09 +08:00
2023-11-28 10:44:58 +08:00
HomeController ( { required this . homeProvider } ) ;
2023-11-28 20:25:09 +08:00
2023-11-30 01:11:31 +08:00
final explored = true . obs ;
2023-11-28 20:25:09 +08:00
final explored2 = 0. obs ;
2023-11-28 10:44:58 +08:00
final create = true . obs ;
final prompt = false . obs ;
2023-11-30 01:11:31 +08:00
final exploreCount = 2. obs ;
2023-11-30 00:08:39 +08:00
final exploreDay = 1. obs ;
2023-11-28 10:44:58 +08:00
final chatMsgList = RxList < ChatMsg > ( [ ] ) ;
2023-11-28 15:44:41 +08:00
final selectKnowledge = Rx < KnowledgePoint ? > ( null ) ;
2023-11-28 19:22:36 +08:00
final knowledgePoints = RxList < Rx < KnowledgePoint > > ( [ ] ) ;
2023-11-30 00:08:39 +08:00
final knowledgePointDialogues = RxList < KnowledgePointDialogue ? > ( [ ] ) ;
final chatInputMsg = ' ' . obs ;
2023-11-30 01:11:31 +08:00
final remainTimeStr = ' 45:00 ' . obs ;
final availableApp = false . obs ;
2023-11-28 10:44:58 +08:00
2023-11-30 00:08:39 +08:00
late String account = ' 琉璃 ' ;
2023-11-28 10:44:58 +08:00
late int gender = 1 ;
late int age = 10 ;
late int occupationId = 1 ;
late String occupationName = ' 画家 ' ;
late List < ExploreApp > leftExploreApps = [ ] ;
late List < ExploreApp > rightExploreApps = [ ] ;
late List < Goal > goals = [ ] ;
2023-11-30 00:08:39 +08:00
late int sendCount = 0 ;
2023-11-28 19:22:36 +08:00
final int second = 3 ;
2023-11-28 10:44:58 +08:00
StreamSubscription < dynamic > ? subscription ;
2023-11-30 00:08:39 +08:00
final scrollController = ScrollController ( ) ;
late TextEditingController textController = TextEditingController ( ) ;
2023-11-30 01:11:31 +08:00
Timer ? exploreTimer ;
late int countTime = 45 * 60 ;
final repeatPeriod = const Duration ( seconds: 1 ) ;
2023-11-28 10:44:58 +08:00
@ override
void onInit ( ) {
super . onInit ( ) ;
2023-11-30 01:11:31 +08:00
account = SpUtil . getString ( Constant . account ) . nullSafe ;
2023-11-28 10:44:58 +08:00
gender = SpUtil . getInt ( Constant . gender , defValue: 1 ) ! ;
age = SpUtil . getInt ( Constant . age , defValue: 10 ) ! ;
2023-11-30 01:11:31 +08:00
occupationName = SpUtil . getString ( Constant . occupationName ) . nullSafe ;
occupationId = SpUtil . getInt ( Constant . occupationId , defValue: 2 ) ! ;
2023-11-30 00:08:39 +08:00
create . value = SpUtil . getBool ( Constant . create , defValue: true ) ! ;
2023-11-28 10:44:58 +08:00
initLeftExploreApps ( ) ;
initRightExploreApps ( ) ;
initArtistGoals ( ) ;
initAcademicianGoals ( ) ;
initKnowledgePoints ( ) ;
if ( create . value ) {
subscription = Stream . periodic ( const Duration ( seconds: 1 ) , ( int i ) = > i )
. take ( second )
2023-11-29 20:37:45 +08:00
. listen ( ( int i ) async {
2023-11-28 10:44:58 +08:00
if ( i > = second - 1 ) {
create . value = false ;
prompt . value = true ;
SpUtil . putBool ( Constant . create , false ) ;
2023-11-29 20:37:45 +08:00
await SmartDialog . show < bool > (
2023-11-28 10:44:58 +08:00
maskColor: const Color ( 0xFF02184B ) . withOpacity ( 0.9 ) ,
2023-11-29 20:37:45 +08:00
backDismiss: false ,
clickMaskDismiss: false ,
builder: ( _ ) = > const FirstTimeDialog ( ) ,
2023-11-28 10:44:58 +08:00
) ;
2023-11-29 20:37:45 +08:00
prompt . value = false ;
2023-11-28 10:44:58 +08:00
}
} ) ;
}
}
@ override
void onReady ( ) async {
super . onReady ( ) ;
}
@ override
void onClose ( ) {
super . onClose ( ) ;
2023-11-30 00:08:39 +08:00
textController . dispose ( ) ;
2023-11-28 10:44:58 +08:00
subscription ? . cancel ( ) ;
2023-11-30 01:11:31 +08:00
exploreTimer ? . cancel ( ) ;
}
Future explorePress ( ) async {
if ( explored . value ) {
availableApp . value = true ;
if ( exploreTimer = = null ) {
exploreTimer = Timer . periodic ( repeatPeriod , ( timer ) {
if ( countTime < = 0 ) {
explored . value = false ;
exploreCount . value = 0 ;
availableApp . value = false ;
countTime = 45 * 60 ;
exploreTimer ! . cancel ( ) ;
exploreTimer = null ;
return ;
}
countTime - - ;
int minute = countTime % 3600 ~ / 60 ;
int second = countTime % 60 ;
var str = ' ' ;
if ( minute / 10 < 1 ) {
str = ' ${ str } 0 $ minute : ' ;
} else {
str = ' $ str $ minute : ' ;
}
if ( second / 10 < 1 ) {
str = ' ${ str } 0 $ second ' ;
} else {
str = ' $ str $ second ' ;
}
remainTimeStr . value = str ;
} ) ;
} else {
exploreTimer ! . cancel ( ) ;
exploreTimer = null ;
}
}
2023-11-28 10:44:58 +08:00
}
void initKnowledgePoints ( ) {
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 1 , left: 559.0 , top: 149.0 , title: ' 太阳系中的行星 ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 1 ,
id: 0 ,
isGpt: true ,
text: ''' 太阳系是一个神奇的地方,它由太阳和围绕它运行的各种天体组成,包括我们的地球🌍!
你 知 道 太 阳 系 里 有 多 少 个 行 星 吗 ? 答 案 是 八 个 🪐 !
让 我 们 来 一 起 深 入 了 解 太 阳 系 中 的 每 一 个 行 星 。 🌌
太 阳 系 的 行 星 概 览
1. 水 星 ( Mercury )
• 太 阳 系 中 最 靠 近 太 阳 的 行 星 。
• 表 面 温 差 极 大 , 白 天 极 热 , 夜 晚 极 冷 。
• 没 有 真 正 的 大 气 层 。
2. 金 星 ( Venus )
• 类 似 于 地 球 的 大 小 和 结 构 , 有 时 被 称 为 地 球 的 “ 姊 妹 行 星 ” 。
• 表 面 被 浓 密 的 二 氧 化 碳 大 气 层 覆 盖 , 有 着 极 端 的 温 室 效 应 。
• 表 面 温 度 极 高 , 足 以 融 化 铅 。
3. 地 球 ( Earth )
• 太 阳 系 中 唯 一 已 知 有 生 命 存 在 的 行 星 。
• 有 丰 富 的 水 资 源 和 多 样 的 生 态 系 统 。
4. 火 星 ( Mars )
• 常 被 称 为 “ 红 色 星 球 ” , 因 其 表 面 的 氧 化 铁 而 呈 红 色 。
• 曾 经 可 能 有 液 态 水 存 在 , 是 潜 在 的 生 命 存 在 地 。
5. 木 星 ( Jupiter )
• 太 阳 系 中 最 大 的 行 星 。
• 以 其 显 著 的 红 斑 ( 一 个 巨 大 的 风 暴 ) 而 闻 名 。
6. 土 星 ( Saturn )
• 以 其 壮 观 的 环 系 统 而 著 称 。
• 主 要 由 氢 和 氦 组 成 , 密 度 非 常 低 , 甚 至 可 以 在 水 上 漂 浮 。
7. 天 王 星 ( Uranus )
• 以 其 独 特 的 蓝 绿 色 大 气 而 闻 名 。
• 其 轴 极 度 倾 斜 , 几 乎 与 轨 道 平 面 垂 直 。
8. 海 王 星 ( Neptune )
• 类 似 于 天 王 星 , 但 更 远 且 更 冷 。
• 以 强 烈 的 风 暴 和 极 高 的 风 速 而 闻 名 。
每 个 行 星 都 有 其 独 特 的 特 点 和 奥 秘 , 从 火 星 可 能 存 在 的 生 命 迹 象 到 土 星 美 丽 的 环 带 , 太 阳 系 充 满 了 令 人 惊 叹 的 现 象 和 未 解 之 谜 。 🚀 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 1 , id: 1 , isGpt: false , text: ' 太阳系的行星有什么有趣的知识? ' ) ) ;
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 1 ,
id: 1 ,
isGpt: true ,
text: ''' 太阳系的行星充满了许多有趣的知识和神秘的现象。让我们来探索一些关于这些行星的迷人事实吧!🌌
1. 金 星 是 太 阳 系 中 唯 一 一 个 逆 时 针 自 转 的 行 星 , 这 意 味 着 从 金 星 表 面 看 太 阳 会 从 西 边 升 起 , 从 东 边 落 下 。
2. 火 星 表 面 有 河 道 和 湖 泊 的 迹 象 , 暗 示 它 曾 经 有 液 态 水 流 动 。
3. 土 星 的 密 度 低 到 如 果 放 在 一 大 盆 水 里 , 它 可 以 漂 浮 。
每 个 行 星 都 有 其 独 特 的 特 性 和 神 秘 , 这 些 只 是 冰 山 一 角 。 太 阳 系 的 探 索 永 远 充 满 惊 喜 和 新 发 现 。
如 果 你 对 某 个 特 定 行 星 或 现 象 感 兴 趣 , 可 以 告 诉 我 , 我 们 可 以 更 深 入 地 探 讨 。 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 1 , id: 2 , isGpt: false , text: ' 有哪些知识是我能用在生活中的? ' ) ) ;
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 1 ,
id: 2 ,
isGpt: true ,
text: ''' 了解太阳系和宇宙可以帮助你在日常生活中观察和理解许多现象。这里有一些知识点,不仅有趣,而且可以应用到你的日常生活中:
1. 日 夜 更 替 :
• 理 解 地 球 围 绕 自 己 的 轴 旋 转 导 致 的 日 夜 更 替 。 当 你 的 一 侧 面 向 太 阳 时 , 是 白 天 ; 当 转 到 背 对 太 阳 时 , 是 夜 晚 。
2. 季 节 变 化 :
• 地 球 倾 斜 的 轴 使 得 一 年 中 不 同 时 间 接 受 到 太 阳 光 的 角 度 和 时 间 长 度 不 同 , 导 致 季 节 的 变 化 。 这 解 释 了 为 什 么 有 时 天 气 炎 热 , 有 时 又 寒 冷 。
3. 星 座 和 夜 空 :
• 学 习 夜 空 中 的 星 座 , 可 以 让 你 在 晚 上 观 星 时 识 别 它 们 。 例 如 , 你 可 以 找 到 北 斗 七 星 或 猎 户 座 。
4. 月 亮 的 相 位 :
• 观 察 月 亮 如 何 在 一 个 月 内 从 新 月 变 为 满 月 再 回 到 新 月 。 这 些 变 化 是 由 月 亮 围 绕 地 球 旋 转 , 我 们 从 地 球 上 看 到 的 月 亮 被 太 阳 照 亮 的 部 分 发 生 变 化 造 成 的 。 ''' ));
2023-11-28 10:44:58 +08:00
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 2 , right: 751.0 , top: 198.0 , title: ' 中国历史:炎帝和皇帝 ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 2 , id: 0 , isGpt: true , text: ''' 让我们来了解一下炎帝和黄帝,这两位是中国历史上非常重要的传说人物。
炎 帝
• 称 号 : 炎 帝 也 被 称 为 神 农 氏 , 是 中 国 古 代 的 部 落 首 领 之 一 。
• 贡 献 : 炎 帝 被 誉 为 农 业 和 中 药 的 始 祖 。 据 说 他 教 会 了 人 们 耕 种 和 使 用 草 药 来 治 病 。
• 传 说 : 有 许 多 关 于 炎 帝 的 传 说 , 其 中 一 个 著 名 的 是 他 尝 百 草 , 发 现 了 许 多 药 用 植 物 的 功 效 。
黄 帝
• 称 号 : 黄 帝 的 名 字 是 轩 辕 氏 , 他 是 中 国 最 古 老 的 传 说 帝 王 之 一 。
• 贡 献 : 黄 帝 被 认 为 是 中 华 民 族 的 始 祖 , 对 中 国 古 代 社 会 的 发 展 和 文 化 有 重 大 影 响 。
• 传 说 : 关 于 黄 帝 有 许 多 故 事 , 包 括 他 与 蚩 尤 的 战 争 , 这 场 战 争 象 征 着 文 明 对 野 蛮 的 胜 利 。
炎 帝 和 黄 帝 的 意 义
• 这 两 位 帝 王 在 中 国 文 化 中 非 常 重 要 , 他 们 不 仅 是 历 史 人 物 , 也 是 文 化 和 民 族 认 同 的 象 征 。
• 关 于 他 们 的 故 事 和 传 说 反 映 了 古 代 中 国 人 对 理 想 领 袖 的 看 法 以 及 对 世 界 的 理 解 。 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 2 , id: 1 , isGpt: false , text: ' 为什么这两个人总是被一起提到?他们之间发生过什么故事呢? ' ) ) ;
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 2 ,
id: 1 ,
isGpt: true ,
text:
''' 炎帝和黄帝之所以常常被一起提到,主要是因为他们在中国古代历史和神话中都占有非常重要的地位。他们被认为是华夏民族(古代汉族的前身)的共同祖先,象征着中国文明的起源。以下是一些关于他们的故事和为什么他们总是一起被提及的原因:
共 同 的 文 化 意 义
• 炎 帝 和 黄 帝 代 表 了 古 代 中 国 文 明 的 两 个 重 要 方 面 : 农 业 ( 炎 帝 ) 和 战 争 及 治 国 策 略 ( 黄 帝 ) 。
• 他 们 被 视 为 中 华 民 族 的 文 化 英 雄 , 象 征 着 中 国 民 族 的 诞 生 和 发 展 。 中 国 人 经 常 自 称 为 “ 炎 黄 子 孙 ” , 这 一 称 谓 就 来 源 于 炎 帝 和 黄 帝 。 这 个 称 号 表 明 了 他 们 对 中 国 民 族 认 同 的 重 要 性 。
传 说 中 的 战 争
• 关 于 炎 帝 和 黄 帝 之 间 的 故 事 , 最 著 名 的 可 能 是 他 们 的 战 争 。 根 据 传 说 , 炎 帝 和 黄 帝 为 了 争 夺 天 下 而 进 行 了 一 场 大 战 。
• 这 场 战 争 最 终 以 黄 帝 的 胜 利 结 束 , 标 志 着 中 国 历 史 上 一 个 新 时 代 的 开 始 。 黄 帝 的 胜 利 象 征 着 中 央 集 权 和 文 明 秩 序 的 确 立 。
历 史 与 神 话 的 结 合
• 炎 帝 和 黄 帝 的 故 事 是 历 史 与 神 话 的 结 合 , 虽 然 没 有 确 凿 的 历 史 记 录 证 明 他 们 的 真 实 存 在 , 但 他 们 的 故 事 在 中 国 文 化 和 历 史 中 占 有 极 其 重 要 的 地 位 。
• 他 们 的 故 事 被 传 颂 千 百 年 , 成 为 了 中 国 历 史 和 文 化 的 一 部 分 。
''' ));
2023-11-28 10:44:58 +08:00
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 3 , left: 632.0 , top: 278.0 , title: ' 水的固态-冰 ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 3 ,
id: 0 ,
isGpt: true ,
text: ''' 冰是水在低温下的固态形式。当水的温度降到0°C( 32°F) 以下时, 它就会开始结冰。❄️
冰 的 形 成
• 冰 是 怎 么 形 成 的 呢 ? 当 水 冷 却 到 冰 点 以 下 时 , 水 分 子 的 运 动 速 度 变 慢 , 使 它 们 紧 密 地 排 列 起 来 , 形 成 固 态 的 冰 。
• 你 可 能 已 经 在 冬 天 看 到 过 户 外 的 水 塘 结 冰 , 或 者 在 冰 箱 里 制 作 过 冰 块 。 这 些 都 是 水 变 成 冰 的 例 子 。
冰 的 特 性
• 冰 比 液 态 水 轻 , 这 就 是 为 什 么 冰 能 在 水 上 漂 浮 的 原 因 。 这 个 特 性 对 于 生 活 在 冰 下 的 水 生 生 物 非 常 重 要 , 因 为 它 们 需 要 水 下 的 氧 气 和 食 物 。
小 实 验
让 我 们 来 做 一 个 简 单 的 实 验 吧 ! 把 一 杯 水 放 在 冰 箱 的 冷 冻 室 里 , 几 个 小 时 后 看 看 发 生 了 什 么 。 你 会 发 现 水 变 成 了 冰 ! 🧊
这 些 基 本 知 识 可 以 帮 助 你 理 解 冰 在 我 们 的 日 常 生 活 和 自 然 界 中 的 作 用 。 如 果 你 有 任 何 问 题 , 或 者 想 了 解 更 多 关 于 水 的 液 态 或 气 态 , 请 随 时 问 我 。 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 3 , id: 1 , isGpt: false , text: ' 有什么有趣的知识? ' ) ) ;
knowledgePointDialogues
. add ( KnowledgePointDialogue ( kpId: 3 , id: 1 , isGpt: true , text: ''' 冰比水轻:
当 水 结 冰 时 , 它 的 体 积 增 大 , 密 度 减 小 , 这 就 是 为 什 么 冰 能 在 水 上 漂 浮 。 这 个 特 性 对 于 自 然 界 非 常 重 要 , 比 如 在 冰 封 的 湖 面 下 , 水 生 生 物 仍 然 可 以 生 存 。
''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 3 , id: 2 , isGpt: false , text: ' 有哪些知识是我能用在生活中的? ' ) ) ;
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 3 ,
id: 2 ,
isGpt: true ,
text: ''' 关于水的三态变化有许多实用的知识可以应用在日常生活中。让我们一起来看看:
1. 保 温 和 保 冷 :
• 了 解 水 的 不 同 状 态 可 以 帮 助 你 理 解 为 什 么 保 温 瓶 可 以 保 持 热 水 的 温 度 , 或 者 为 什 么 冰 箱 能 保 持 食 物 冷 却 。 水 在 变 成 蒸 汽 或 冰 时 需 要 吸 收 或 释 放 能 量 , 这 就 是 为 什 么 冰 可 以 保 持 东 西 冷 却 , 热 水 可 以 保 持 温 暖 。
2. 烹 饪 时 的 水 状 态 变 化 :
• 在 烹 饪 时 , 理 解 水 的 沸 腾 和 蒸 发 对 于 掌 握 正 确 的 烹 饪 时 间 非 常 重 要 。 比 如 说 , 当 水 沸 腾 时 , 温 度 是 100 ° C , 这 是 煮 熟 食 物 的 理 想 温 度 。
3. 天 气 和 气 候 :
• 通 过 观 察 水 的 蒸 发 和 凝 结 , 你 可 以 更 好 地 理 解 天 气 变 化 , 例 如 云 是 如 何 形 成 的 , 或 者 雨 是 怎 么 来 的 。
4. 节 约 水 资 源 :
• 了 解 水 的 重 要 性 和 它 在 自 然 界 中 的 循 环 可 以 帮 助 你 意 识 到 节 约 用 水 的 重 要 性 , 比 如 在 刷 牙 或 洗 澡 时 尽 量 节 约 水 。
5. 冰 的 安 全 应 用 :
• 在 热 天 时 , 使 用 冰 块 来 制 冷 可 以 帮 助 你 保 持 凉 爽 。 同 时 , 了 解 冰 在 低 温 下 的 形 成 可 以 让 你 在 冬 天 时 注 意 到 户 外 的 冰 , 避 免 滑 倒 。
6. 植 物 的 浇 水 :
• 理 解 土 壤 中 水 分 的 蒸 发 可 以 帮 助 你 更 好 地 管 理 植 物 的 浇 水 , 确 保 植 物 得 到 足 够 的 水 分 但 又 不 过 量 。
通 过 学 习 这 些 知 识 , 你 不 仅 能 够 更 好 地 理 解 自 然 界 的 奇 妙 , 还 能 在 生 活 中 运 用 这 些 知 识 , 更 加 科 学 地 生 活 。 ''' ));
2023-11-28 10:44:58 +08:00
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 4 , left: 814.0 , top: 376.0 , title: ' 科学是什么? ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 4 ,
id: 0 ,
isGpt: true ,
text: ''' 科学是一种了解我们周围世界的方式,它通过观察、实验和逻辑推理来探索自然界的奥秘。🔬
科 学 的 重 要 性
• 科 学 帮 助 我 们 理 解 日 常 生 活 中 的 现 象 , 比 如 为 什 么 天 空 是 蓝 色 的 , 或 者 为 什 么 水 会 沸 腾 。
• 科 学 还 可 以 帮 助 我 们 解 决 问 题 和 发 明 新 技 术 , 改 善 我 们 的 生 活 。
科 学 的 方 法
• 科 学 方 法 包 括 提 出 问 题 、 做 假 设 、 进 行 实 验 和 得 出 结 论 。 这 是 科 学 家 用 来 确 保 他 们 的 发 现 是 准 确 的 方 法 。
通 过 这 些 基 本 知 识 , 你 可 以 开 始 理 解 科 学 是 如 何 工 作 的 , 以 及 它 是 如 何 成 为 我 们 理 解 世 界 的 一 个 重 要 工 具 。 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 4 , id: 1 , isGpt: false , text: ' 科学跟其他学科有什么区别呢? ' ) ) ;
knowledgePointDialogues . add (
KnowledgePointDialogue ( kpId: 4 , id: 1 , isGpt: true , text: ''' 1. 做实验:
• 科 学 : 就 像 在 科 学 课 上 做 实 验 一 样 , 科 学 家 通 过 做 实 验 来 了 解 事 物 是 如 何 工 作 的 。
• 其 他 学 科 : 比 如 在 美 术 课 上 , 你 可 能 会 画 画 或 制 作 艺 术 品 , 这 更 多 的 是 关 于 创 造 和 表 达 , 而 不 是 做 实 验 。
2. 探 索 自 然 :
• 科 学 : 科 学 是 关 于 探 索 自 然 世 界 的 , 比 如 为 什 么 天 空 是 蓝 的 , 或 者 植 物 是 如 何 生 长 的 。
• 其 他 学 科 : 例 如 , 在 历 史 课 上 , 你 会 学 习 过 去 发 生 的 事 情 , 比 如 古 代 文 明 或 重 要 事 件 。
3. 找 答 案 :
• 科 学 : 当 科 学 家 想 知 道 答 案 时 , 他 们 会 做 很 多 实 验 来 找 答 案 。
• 其 他 学 科 : 在 其 他 学 科 , 比 如 文 学 , 你 可 能 会 阅 读 故 事 或 诗 歌 , 并 谈 论 这 些 故 事 或 诗 歌 的 意 义 。
4. 证 明 理 论 :
• 科 学 : 在 科 学 中 , 如 果 你 有 一 个 想 法 , 你 需 要 通 过 实 验 来 证 明 它 是 对 的 。
• 其 他 学 科 : 在 如 音 乐 或 艺 术 等 学 科 中 , 没 有 “ 对 或 错 ” 的 实 验 , 更 多 的 是 根 据 你 的 感 觉 和 创 意 来 创 作 。
5. 解 释 事 物 :
• 科 学 : 科 学 帮 助 我 们 理 解 事 物 是 如 何 工 作 的 , 比 如 电 是 如 何 亮 起 灯 泡 的 。
• 其 他 学 科 : 其 他 学 科 , 比 如 语 文 , 帮 助 我 们 学 习 语 言 , 讲 故 事 , 和 表 达 我 们 的 想 法 。
''' ));
2023-11-28 10:44:58 +08:00
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 5 , right: 696.0 , top: 438.0 , title: ' 《星夜》-梵高 ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 5 ,
id: 0 ,
isGpt: true ,
text: ''' 让我们开始关于梵高的《星夜》这一主题的学习之旅吧。这幅画不仅是梵高最著名的作品之一,也是世界上最受欢迎和认可的艺术作品之一。
了 解 《 星 夜 》
• 背 景 介 绍 : 首 先 , 我 们 会 了 解 《 星 夜 》 的 背 景 信 息 。 这 幅 画 是 在 1889 年 梵 高 住 在 法 国 圣 雷 米 的 精 神 病 院 时 创 作 的 。
• 画 作 特 点 : 《 星 夜 》 以 其 充 满 活 力 的 星 空 和 旋 转 的 云 彩 而 闻 名 。 梵 高 使 用 了 大 胆 的 颜 色 和 笔 触 来 创 造 出 动 态 的 天 空 效 果 。
色 彩 的 使 用
• 对 比 鲜 明 的 颜 色 : 在 《 星 夜 》 中 , 梵 高 使 用 了 鲜 明 对 比 的 颜 色 来 营 造 画 面 上 的 强 烈 视 觉 效 果 。 例 如 , 他 使 用 了 深 蓝 和 光 亮 的 黄 色 来 描 绘 夜 空 和 星 星 。
• 情 感 表 达 : 颜 色 的 选 择 和 组 合 不 仅 仅 是 视 觉 上 的 , 它 们 还 用 来 表 达 情 感 。 深 蓝 色 传 达 了 夜 晚 的 宁 静 和 深 邃 , 而 明 亮 的 黄 色 则 代 表 着 希 望 和 光 明 。
笔 触 的 技 法
• 浓 重 和 动 感 的 笔 触 : 梵 高 在 《 星 夜 》 中 使 用 了 浓 重 且 充 满 动 感 的 笔 触 。 他 的 笔 触 既 粗 犷 又 流 畅 , 给 人 一 种 躁 动 和 能 量 感 。
• 创 造 纹 理 和 层 次 : 通 过 这 种 笔 触 , 梵 高 在 画 布 上 创 造 了 丰 富 的 纹 理 和 层 次 感 。 比 如 , 天 空 中 旋 转 的 云 彩 和 闪 烁 的 星 星 就 是 通 过 这 种 技 法 生 动 表 现 出 来 的 。
小 问 题 : 你 认 为 整 幅 画 作 表 达 出 了 梵 高 的 什 么 样 的 情 感 呢 ? ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 5 ,
id: 1 ,
isGpt: false ,
text: ' 这幅画表达了一种梦幻的、充满活力的情感。画里的旋转星空让我感到一种强烈的生命力。 ' ) ) ;
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 5 ,
id: 1 ,
isGpt: true ,
text: ''' 你对梵高的《星夜》的感受非常深刻。这幅画确实是以其独特的方式捕捉和表达了一种梦幻般、充满活力的情感。
生 命 力 和 运 动 感
• 旋 转 的 星 空 : 画 中 的 旋 转 星 空 是 非 常 引 人 注 目 的 。 梵 高 使 用 螺 旋 形 和 波 浪 形 的 笔 触 来 描 绘 星 空 和 云 彩 , 这 些 元 素 给 人 一 种 动 态 和 流 动 的 感 觉 , 仿 佛 星 空 本 身 是 活 的 。
• 颜 色 的 活 力 : 明 亮 的 黄 色 星 星 在 深 蓝 色 的 天 空 中 跳 跃 , 这 种 鲜 明 的 色 彩 对 比 增 强 了 画 面 的 生 命 力 和 活 力 。
情 感 的 表 达
• 梵 高 的 内 心 世 界 : 许 多 人 认 为 《 星 夜 》 反 映 了 梵 高 当 时 复 杂 的 情 感 状 态 , 包 括 他 对 无 限 宇 宙 的 敬 畏 、 对 自 然 之 美 的 热 爱 , 以 及 一 种 深 刻 的 孤 独 感 。
• 梦 幻 与 现 实 的 交 融 : 画 中 梦 幻 的 天 空 与 安 静 的 村 庄 形 成 了 对 比 , 这 可 能 代 表 了 梵 高 对 理 想 与 现 实 之 间 的 思 考 。
艺 术 的 影 响
• 对 后 世 的 启 发 : 《 星 夜 》 不 仅 是 梵 高 最 著 名 的 作 品 之 一 , 也 对 后 世 艺 术 家 和 观 众 产 生 了 深 远 的 影 响 。 它 的 独 特 风 格 和 深 刻 情 感 激 发 了 人 们 对 艺 术 的 无 限 想 象 。
《 星 夜 》 作 为 一 幅 艺 术 作 品 , 以 其 独 特 的 视 觉 语 言 和 深 刻 的 情 感 表 达 , 给 每 个 观 看 者 带 来 不 同 的 感 受 和 启 发 。 这 正 是 它 成 为 永 恒 经 典 的 原 因 之 一 。 ''' ));
2023-11-28 10:44:58 +08:00
knowledgePoints . add ( KnowledgePoint (
2023-11-30 00:08:39 +08:00
id: 6 , left: 741.0 , top: 499.0 , title: ' 《小王子》-第一章 ' , leared: false )
2023-11-28 19:22:36 +08:00
. obs ) ;
2023-11-30 00:08:39 +08:00
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 6 ,
id: 0 ,
isGpt: true ,
text:
''' 《小王子》是一本由法国作家安托万·德·圣-埃克苏佩里创作的著名小说, 它包含了许多深刻的生活哲理和寓意。让我们一起阅读《小王子》的第1章吧!
在 《 小 王 子 》 的 第 1 章 中 , 作 者 安 托 万 · 德 · 圣 - 埃 克 苏 佩 里 讲 述 了 他 小 时 候 对 画 画 的 热 爱 , 以 及 他 如 何 因 大 人 们 的 不 理 解 而 放 弃 了 这 个 爱 好 。 他 画 了 一 条 蟒 蛇 吞 象 的 画 , 但 大 人 们 却 认 为 那 是 一 顶 帽 子 。 这 段 故 事 展 示 了 大 人 世 界 与 孩 子 世 界 之 间 的 隔 阂 和 误 解 。
小 问 题 : 你 觉 得 哪 些 句 子 是 写 的 特 别 好 的 ? 为 什 么 ? ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 6 , id: 1 , isGpt: false , text: ''' 1. 于是我的思维飞到从林里去探险,最后用彩色蜡笔画出了处女作。
2. 我 想 知 道 是 否 有 人 能 真 正 地 理 解 这 幅 画 。 但 答 案 总 是 : “ 这 是 帽 子 呀 。 ” 如 果 对 方 这 么 回 答 , 那 我 不 会 再 提 起 大 蟒 蛇 、 原 始 森 林 和 星 星 。 我 会 迁 就 他 的 水 平 我 会 跟 他 谈 论 桥 牌 、 高 尔 夫 、 政 治 或 者 领 带 。
这 两 句 话 看 出 了 我 丰 富 的 想 象 力 , 和 其 他 人 的 对 比 。 ''' ));
knowledgePointDialogues . add ( KnowledgePointDialogue (
kpId: 6 ,
id: 1 ,
isGpt: true ,
text:
''' 选择的这两句话非常有意义,它们揭示了《小王子》中一个核心主题:成人世界与儿童世界的理解和想象力的差异。这里是这两句话的英文版本以及一些关键词汇:
1. I pondered deeply , then , over the adventures of the jungle . And after some work with a colored pencil I succeeded in making my first drawing .
关 键 词 汇 :
• Pondered - 深 思 熟 虑
• Adventures - 冒 险
• Jungle - 丛 林
• Colored pencil - 彩 色 铅 笔
• Succeeded - 成 功
• Drawing - 画 画
2. I would try to find out , so , if this was a person of true understanding . But , whoever it was , he , or she , would always say , " That is a hat. " Then I would never talk to that person about boa constrictors , or primeval forests , or stars . I would bring myself down to his level . L would talk to him about bridge , and golf , and politics , and neckties .
关 键 词 汇 :
• Understanding - 理 解
• Person - 人
• True - 真 实 的
• Whoever - 无 论 谁
• Hat - 帽 子
• Boa constrictors - 蟒 蛇
• Primeval - 原 始 的
• Forests - 森 林
• Level - 水 平
• Golf - 高 尔 夫
• Politics - 政 治
• Neckties - 领 带 ''' ));
2023-11-28 10:44:58 +08:00
}
void initArtistGoals ( ) {
goals . add (
Goal ( id: 1 , occupationId: 1 , age: age + 0 , title: ' 今年目标 ' , contents: [
GoalContent ( title: ' 基础绘画技巧 ' , content: ' 学习和练习基础的绘画技巧,如素描、色彩等。 ' ) ,
GoalContent ( title: ' 艺术欣赏能力 ' , content: ' 参观美术馆、画展,增进对不同画派和风格的了解。 ' ) ,
GoalContent ( title: ' 创意表达培养 ' , content: ' 通过日常生活的观察和想象,创作一些个人作品。 ' ) ,
] ) ) ;
goals . add (
Goal ( id: 2 , occupationId: 1 , age: age + 3 , title: ' 三年目标 ' , contents: [
GoalContent ( title: ' 基础绘画技巧 ' , content: ' 尝试不同的绘画媒介和技巧,开始探索个人的艺术风格。 ' ) ,
GoalContent ( title: ' 艺术欣赏能力 ' , content: ' 参加美术课程或夏令营,系统学习绘画知识。 ' ) ,
GoalContent ( title: ' 创意表达培养 ' , content: ' 参加学校或社区的绘画比赛和展览,锻炼展示自己作品的能力。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 3 , occupationId: 1 , title: ' 18岁目标 ' , contents: [
GoalContent ( title: ' 艺术类院校申请 ' , content: ' 申请艺术类高中或大学,接受正规的艺术教育。 ' ) ,
GoalContent ( title: ' 艺术实践加强 ' , content: ' 通过参加画展、艺术竞赛等,增加实践经验。 ' ) ,
GoalContent ( title: ' 艺术理论学习 ' , content: ' 学习艺术史、美学等,增强艺术理论素养。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 4 , occupationId: 1 , title: ' 22岁目标 ' , contents: [
GoalContent ( title: ' 专业深造 ' , content: ' 在艺术类大学深入学习绘画,探索个人艺术方向。 ' ) ,
GoalContent ( title: ' 国际视野拓展 ' , content: ' 参与国际艺术交流活动,了解全球艺术潮流。 ' ) ,
GoalContent ( title: ' 独立创作展示 ' , content: ' 举办个人画展或参加重要艺术展览,展示个人作品。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 5 , occupationId: 1 , title: ' 30岁目标 ' , contents: [
GoalContent ( title: ' 个人品牌建立 ' , content: ' 作为画家在艺术界建立良好的个人品牌和声誉。 ' ) ,
GoalContent ( title: ' 艺术教育贡献 ' , content: ' 通过教学或工作坊等方式分享艺术知识和技巧。 ' ) ,
GoalContent ( title: ' 国际艺术影响力 ' , content: ' 作品具有国际影响力,参与国际艺术交流与合作。 ' ) ,
] ) ) ;
}
void initAcademicianGoals ( ) {
goals . add (
Goal ( id: 1 , occupationId: 2 , age: age + 0 , title: ' 今年目标 ' , contents: [
GoalContent ( title: ' 课外阅读提升 ' , content: ' 选择与科学相关的儿童图书,每周至少阅读一本。 ' ) ,
GoalContent ( title: ' 科学兴趣培养 ' , content: ' 参加科学实验兴趣小组或课外科学俱乐部,增进对科学的兴趣和理解。 ' ) ,
GoalContent ( title: ' 基础数学能力 ' , content: ' 每天坚持数学练习,提高逻辑思维和解决问题的能力。 ' ) ,
] ) ) ;
goals . add (
Goal ( id: 2 , occupationId: 2 , age: age + 3 , title: ' 三年目标 ' , contents: [
GoalContent ( title: ' 科学竞赛参与 ' , content: ' 参加学校或地区的科学竞赛,提高科学实践能力。 ' ) ,
GoalContent ( title: ' 英语能力加强 ' , content: ' 科学领域英语是必备技能,提高英语水平以便阅读国际科学文献。 ' ) ,
GoalContent ( title: ' 拓展科学知识 ' , content: ' 通过在线课程或夏令营等方式,学习物理、化学等更多科学知识。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 3 , occupationId: 2 , title: ' 18岁目标 ' , contents: [
GoalContent ( title: ' 理想大学申请 ' , content: ' 申请国内外知名大学的科学相关专业,为深造打下基础。 ' ) ,
GoalContent ( title: ' 科学研究实习 ' , content: ' 在大学期间尽早寻找实习机会,加入科研团队。 ' ) ,
GoalContent ( title: ' 专业网络构建 ' , content: ' 建立与科学家和研究人员的联系,拓宽学术交流圈。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 4 , occupationId: 2 , title: ' 22岁目标 ' , contents: [
GoalContent ( title: ' 硕士/博士深造 ' , content: ' 申请硕士或直接博士项目,深入专业领域研究。 ' ) ,
GoalContent ( title: ' 学术论文发表 ' , content: ' 在专业期刊上发表研究成果,建立学术声誉。 ' ) ,
GoalContent ( title: ' 国际科研合作 ' , content: ' 参与国际科研项目,扩大研究视野。 ' ) ,
] ) ) ;
goals . add ( Goal ( id: 5 , occupationId: 2 , title: ' 30岁目标 ' , contents: [
GoalContent ( title: ' 科学研究突破 ' , content: ' 在某一科学领域取得显著研究成果。 ' ) ,
GoalContent ( title: ' 科学社群领导 ' , content: ' 在科学界承担一定的领导角色,如项目负责人或研究小组领头。 ' ) ,
GoalContent ( title: ' 学术影响力拓展 ' , content: ' 通过公开讲座、论文发表等方式,提高在科学界的影响力。 ' ) ,
] ) ) ;
}
void initLeftExploreApps ( ) {
leftExploreApps . add ( ExploreApp (
name: ' 哔哩哔哩 ' ,
icon: ' btn_app_bilibili ' ,
grayIcon: ' btn_app_bilibili_gray ' ,
) ) ;
leftExploreApps . add ( ExploreApp (
name: ' 知乎 ' ,
icon: ' btn_app_zhihu ' ,
grayIcon: ' btn_app_zhihu_gray ' ,
) ) ;
leftExploreApps . add ( ExploreApp (
name: ' 纪念碑谷 ' ,
icon: ' btn_app_jinianbeigu ' ,
grayIcon: ' btn_app_jinianbeigu_gray ' ,
) ) ;
leftExploreApps . add ( ExploreApp (
name: ' 蛋仔派对 ' ,
icon: ' btn_app_danzaipaidui ' ,
grayIcon: ' btn_app_danzaipaidui_gray ' ,
) ) ;
}
void initRightExploreApps ( ) {
rightExploreApps . add ( ExploreApp (
name: ' 古诗文网 ' ,
icon: ' btn_app_gushiwenwang ' ,
grayIcon: ' btn_app_gushiwenwang_gray ' ,
) ) ;
rightExploreApps . add ( ExploreApp (
name: ' 数理思维启蒙 ' ,
icon: ' btn_app_funexpected ' ,
grayIcon: ' btn_app_funexpected_gray ' ,
) ) ;
rightExploreApps . add ( ExploreApp (
name: ' 多邻国 ' ,
icon: ' btn_app_duolingo ' ,
grayIcon: ' btn_app_duolingo_gray ' ,
) ) ;
rightExploreApps . add ( ExploreApp (
name: ' 每日艺术 ' ,
icon: ' btn_app_dailyart ' ,
grayIcon: ' btn_app_dailyart_gray ' ,
) ) ;
}
Goal getGoal ( int id ) {
return goals
. firstWhere ( ( t ) = > t . id = = id & & t . occupationId = = occupationId ) ;
}
Future reset ( ) async {
SpUtil . remove ( Constant . create ) ;
2023-11-29 20:37:45 +08:00
await Get . offAllNamed ( Routes . WELCOME ) ;
2023-11-28 10:44:58 +08:00
}
Future leareKnowledge ( KnowledgePoint knowledge ) async {
2023-11-30 00:08:39 +08:00
textController = TextEditingController ( ) ;
sendCount = 0 ;
2023-11-28 15:44:41 +08:00
selectKnowledge . value = knowledge ;
2023-11-28 10:44:58 +08:00
chatMsgList . clear ( ) ;
2023-11-30 00:08:39 +08:00
var knowledgePointDialogue = knowledgePointDialogues . firstWhere ( ( t ) = >
t ! . kpId = = selectKnowledge . value ! . id & & t . id = = sendCount & & t . isGpt ! ) ;
var chatMsg = ChatMsg (
id: Guid . newGuid . toString ( ) ,
text: knowledgePointDialogue ! . text ,
isBot: 1 ,
knowledgeId: selectKnowledge . value ! . id ,
) ;
chatMsgList . add ( chatMsg ) ;
2023-11-30 01:11:31 +08:00
2023-11-30 00:08:39 +08:00
sendCount + + ;
knowledgePointDialogue = knowledgePointDialogues . firstWhere ( ( t ) = >
t ! . kpId = = selectKnowledge . value ! . id & & t . id = = sendCount & & ! t . isGpt ! ) ;
chatInputMsg . value = knowledgePointDialogue ! . text ! ;
2023-11-28 10:44:58 +08:00
await Get . toNamed ( Routes . HOME + Routes . EXPLORE_STUDY ) ;
}
Future addSendMsg ( String txt ) async {
var chatMsg = ChatMsg (
id: Guid . newGuid . toString ( ) ,
text: txt ,
isBot: 0 ,
2023-11-28 15:44:41 +08:00
knowledgeId: selectKnowledge . value ! . id ,
2023-11-28 10:44:58 +08:00
) ;
chatMsgList . add ( chatMsg ) ;
2023-11-28 15:44:41 +08:00
2023-11-30 00:08:39 +08:00
SchedulerBinding . instance . addPostFrameCallback ( ( timeStamp ) {
Future . delayed ( const Duration ( milliseconds: 1000 ) ) ;
} ) ;
var knowledgePointDialogue = knowledgePointDialogues . firstWhere ( ( t ) = >
t ! . kpId = = selectKnowledge . value ! . id & & t . id = = sendCount & & t . isGpt ! ) ;
chatMsg = ChatMsg (
id: Guid . newGuid . toString ( ) ,
text: knowledgePointDialogue ! . text ,
isBot: 1 ,
knowledgeId: selectKnowledge . value ! . id ,
) ;
chatMsgList . add ( chatMsg ) ;
2023-11-28 20:25:09 +08:00
SchedulerBinding . instance . addPostFrameCallback ( ( timeStamp ) {
Future . delayed ( const Duration ( milliseconds: 300 ) ) ;
scrollController . jumpTo ( scrollController . position . maxScrollExtent ) ;
} ) ;
2023-11-28 19:22:36 +08:00
var knowledge = knowledgePoints
. firstWhere ( ( t ) = > t . value . id = = selectKnowledge . value ! . id ) ;
knowledge . update ( ( val ) {
val ! . leared = true ;
} ) ;
2023-11-28 15:44:41 +08:00
selectKnowledge . update ( ( val ) {
val ! . leared = true ;
} ) ;
exploreCount . value + + ;
if ( exploreCount . value > = 2 ) {
explored . value = true ;
}
2023-11-30 00:08:39 +08:00
sendCount + + ;
knowledgePointDialogue = knowledgePointDialogues . firstWhere (
( t ) = >
t ! . kpId = = selectKnowledge . value ! . id & &
t . id = = sendCount & &
! t . isGpt ! ,
orElse: ( ) = > null ,
) ;
if ( knowledgePointDialogue ! = null ) {
chatInputMsg . value = knowledgePointDialogue . text ! ;
}
2023-11-28 10:44:58 +08:00
}
}