在 nuxt.js 上添加暗模式切换以 vuetify app v2.0

Posted

技术标签:

【中文标题】在 nuxt.js 上添加暗模式切换以 vuetify app v2.0【英文标题】:Adding a dark mode toggle to vuetify app v2.0 on nuxt.js 【发布时间】:2020-04-19 07:53:09 【问题描述】:

我正在使用 nuxt.js vuetify 模板,nuxt.config.js 已经有一个对象(如下所述),它定义了应用程序的暗模式。

  vuetify: 
    customVariables: ['~/assets/variables.scss'],
    theme: 
      dark: true,
      themes: 
        dark: 
          primary: colors.blue.darken2,
          accent: colors.grey.darken3,
          secondary: colors.amber.darken3,
          info: colors.teal.lighten1,
          warning: colors.amber.base,
          error: colors.deepOrange.accent4,
          success: colors.green.accent3
        
      
    
  ,

如何将其添加为一项功能,作为从浅色版本切换到深色版本的按钮? Vuetify 有 documentation 用于主题自定义,但没有正确的方法来解释如何在应用程序中执行此操作。

【问题讨论】:

另外,请查看此示例以供参考:vuetifyjs.com/en/features/theme/#example 【参考方案1】:

您可以在v-btn 上执行以下操作来操纵$vuetify.theme.dark

<v-btn @click="$vuetify.theme.dark=!$vuetify.theme.dark">Toggle Theme</v-btn>

这将在浅色和深色主题之间切换。 该设置在文档中的标题“Light and Dark”中进行了描述,但我承认很容易错过。

编辑:在本地存储中保存状态

创建一个方法并调用它@click。

toggleTheme() 
   this.$vuetify.theme.dark=!this.$vuetify.theme.dark;
   localStorage.setItem("useDarkTheme", this.$vuetify.theme.dark.toString())

在挂载后,您可以加载该状态

mounted() 
  const theme = localStorage.getItem("useDarkTheme");
    if (theme) 
      if (theme == "true") 
        this.$vuetify.theme.dark = true;
       else this.$vuetify.theme.dark = false;
    

【讨论】:

如何在localStorage中存储暗模式状态,并在应用启动时获取? @FarshidRezaei 查看我的编辑。我就是这样做的 “mounted”函数放在哪里?哪个文件或组件? 您希望对主题进行初始检查的任何位置。如果您有一个登录页面并且您希望它已经是黑暗的,那么它将是那个登录页面【参考方案2】:

我自己修好了。转到 nuxt.config 并添加此代码。

buildModules: [
    [
      "@nuxtjs/vuetify",
      
        treeShake: true,
        theme: 
          dark: true,
        
      
    ]
  ],

【讨论】:

这是否提供了明暗模式之间的切换?我不明白如何..【参考方案3】:

我发现为暗/亮模式添加开关按钮的好方法:

<v-btn
  icon
  :color="$vuetify.theme.dark ? 'yellow' : 'dark'"
  @click="$vuetify.theme.dark = !$vuetify.theme.dark"
>

不需要其他任何东西。

【讨论】:

以上是关于在 nuxt.js 上添加暗模式切换以 vuetify app v2.0的主要内容,如果未能解决你的问题,请参考以下文章

将 LocalStorage 添加到暗模式切换

如何以编程方式快速切换到暗模式

有没有办法在明暗模式之间切换后保留变量状态的值以显示在文本视图中

如何在暗模式切换中使用 localStorage?

如何添加本地存储以在 Gatsby 中保留暗模式主题

nuxt实现全局状态管理导航切换优化