masastack / MASA.Blazor

Blazor UI component library based on Material Design. Support Blazor Server, Blazor WebAssembly and MAUI Blazor.
https://docs.masastack.com/blazor/getting-started/installation
MIT License
1.12k stars 151 forks source link

是否可以像MudBlazor那样通过Theme对象动态更改主题? #929

Closed mookeview closed 1 year ago

mookeview commented 1 year ago

如题,谢谢!

doddgu commented 1 year ago

目前还不支持,这个计划在2.0中提供支持。

mookeview commented 1 year ago

哈哈,好期待,能告知2.0大概什么时候发布吗?

doddgu commented 1 year ago

目前 Theme 中的参数是写在 head -> style 中。我们需要支持动态调整 style 即可。如果你有兴趣提供支持可以给我们提pr。2.0我们预计第一个版本会在5月前后。

mookeview commented 1 year ago

谢谢,目前初学,水平有限啊

LittleFish-233 commented 1 year ago

952 中简单地支持了动态修改主题, @mookeview 可以试试看有没有实现想要地效果?

mookeview commented 1 year ago

谢谢,可否告知基本用法?

LittleFish-233 commented 1 year ago
[Inject]
public MasaBlazor MasaBlazor { get; set; }

public void ChangeThemeColor(string color)
{
    var theme = MasaBlazor.Theme;
    theme.Themes.Light.Primary = color;
    MasaBlazor.Theme = theme;
}
capdiem commented 1 year ago

@LittleFish-233 更改主题的API不太规范,我有以下建议,希望你提个PR修改下:

  1. MasaBlazor.Theme 仍然是只读的。
  2. MasaBlazor类下搞一个 public 的方法 ToggleTheme,把Theme的set的内容移入进去。
  3. 主题的设置应该再 AddMasaBlazor 时就确定下来,不应该修改,MasaBlazor.Theme.Themes.Light.Primary = color 不应该支持。
capdiem commented 1 year ago

implemented by #1018