fix: theme not applying to training/records pages

Root cause: themeStyle was on .container only, but modals (picker,
day-detail) were siblings of .container in the WXML tree. CSS custom
properties set via inline style on .container don't cascade to
sibling elements — those elements fall back to app.wxss page-level
defaults (always orange). Users saw modal buttons in orange and
concluded the whole page didn't follow theme.

Fixes:
- index.wxml: Move picker modal inside .container so it inherits
  themeStyle CSS variables (position:fixed is viewport-relative,
  so nesting doesn't affect modal positioning)
- index.js, records.js: Add applyThemeToPage in onLoad alongside
  onShow, preventing a flash of default orange before onShow fires
- timer.js: Add onShow with applyThemeToPage as lifecycle safety
  net; extract _init from onLoad for clean separation
This commit is contained in:
2026-06-04 16:53:53 +08:00
parent e2186b2502
commit 8079242daf
4 changed files with 41 additions and 31 deletions
+1
View File
@@ -23,6 +23,7 @@ Page({
}, },
onLoad() { onLoad() {
themeMod.applyThemeToPage(this)
this.refresh() this.refresh()
}, },
+1 -1
View File
@@ -76,7 +76,6 @@
<text class="tip-icon">💡</text> <text class="tip-icon">💡</text>
<text class="tip-text">保持身体成一条直线,核心收紧,均匀呼吸</text> <text class="tip-text">保持身体成一条直线,核心收紧,均匀呼吸</text>
</view> </view>
</view>
<!-- 时间选择弹窗 --> <!-- 时间选择弹窗 -->
<view class="modal-overlay modal-overlay-bottom" wx:if="{{showPicker}}" bindtap="onClosePicker"> <view class="modal-overlay modal-overlay-bottom" wx:if="{{showPicker}}" bindtap="onClosePicker">
@@ -112,3 +111,4 @@
<text class="picker-cancel" bindtap="onClosePicker">取消</text> <text class="picker-cancel" bindtap="onClosePicker">取消</text>
</view> </view>
</view> </view>
</view>
+1
View File
@@ -20,6 +20,7 @@ Page({
}, },
onLoad() { onLoad() {
themeMod.applyThemeToPage(this)
this.refresh() this.refresh()
}, },
+8
View File
@@ -21,6 +21,14 @@ Page({
onLoad(options) { onLoad(options) {
themeMod.applyThemeToPage(this) themeMod.applyThemeToPage(this)
this._init(options)
},
onShow() {
themeMod.applyThemeToPage(this)
},
_init(options) {
let target let target
let planDay = 1 let planDay = 1