目前正在開發一個RShiny應用程序,它有一個黑暗模式開關。除了rhandsontable表之外,其他的都正常工作——它們的字體顏色和背景不會隨著應用程序的其他部分而更新。
以下是模式間切換的當前邏輯:
observe(session$setCurrentTheme( # change dark-light mode
if(isTRUE(input$mode)) { bs_theme(bootswatch = "darkly") }
else { bs_theme(bootswatch = "default") }
))
我嘗試過包含一個對bs_add_variables()的調用來訪問CSS類,但是也不起作用:
observe(session$setCurrentTheme( # change dark-light mode
if(isTRUE(input$mode)) { bs_add_variables(bs_theme(bootswatch='darkly'), '.handsontable:color'='#992323', '.handsontable:bg-color'='#992323') }
else { bs_theme(bootswatch = "default") }
))
有人知道如何解決這個問題嗎?謝謝!
編輯:奇怪的是,值就在那里——只是格式沒有在UI中顯示它們。
不帶黑暗模式的可手持設備
黑暗模式下可手持
黑暗模式下可手持-顯示值
可重復的例子
library(shiny)
library(rhandsontable)
library(bslib)
library(shinyWidgets)
data <- data.frame(x=1:10,y=11:20,z=21:30,a=1:10*1000000,b=11:20*1000000,c=21:30*1000000)
if (interactive()) {
shinyApp(
ui = navbarPage(
title = 'app', theme = bs_theme(version=5, bootswatch="default"), position = 'static-top', fluid = TRUE,
tabPanel(
'Demo',
fluidRow(
materialSwitch(
inputId = "mode",
label = icon("moon"),
right=TRUE,
status = "success"
),
style='position: right; padding: 5px;'
),
rHandsontableOutput('table')
)
),
server = function(input, output, session) {
observe(session$setCurrentTheme(
if(isTRUE(input$mode)) { bs_theme(bootswatch = "darkly") }
else { bs_theme(bootswatch = "default") }
))
output$table <- renderRHandsontable({
rhandsontable(data, stretchH='all')
})
}
)
}