diff --git a/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs b/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs index 4467b94fb..31faeba52 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs +++ b/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs @@ -9,9 +9,13 @@ namespace Flow.Launcher.Plugin.Sys { public const string Keyword = "fltheme"; - private readonly Theme _theme; private readonly PluginInitContext _context; + // Do not initialize it in the constructor, because it will cause null reference in + // var dicts = Application.Current.Resources.MergedDictionaries; line of Theme + private Theme theme = null; + private Theme Theme => theme ??= Ioc.Default.GetRequiredService(); + #region Theme Selection // Theme select codes simplified from SettingsPaneThemeViewModel.cs @@ -19,24 +23,23 @@ namespace Flow.Launcher.Plugin.Sys private Theme.ThemeData _selectedTheme; public Theme.ThemeData SelectedTheme { - get => _selectedTheme ??= Themes.Find(v => v.FileNameWithoutExtension == _theme.GetCurrentTheme()); + get => _selectedTheme ??= Themes.Find(v => v.FileNameWithoutExtension == Theme.GetCurrentTheme()); set { _selectedTheme = value; - _theme.ChangeTheme(value.FileNameWithoutExtension); + Theme.ChangeTheme(value.FileNameWithoutExtension); - _ = _theme.RefreshFrameAsync(); + _ = Theme.RefreshFrameAsync(); } } - private List Themes => _theme.LoadAvailableThemes(); + private List Themes => Theme.LoadAvailableThemes(); #endregion public ThemeSelector(PluginInitContext context) { _context = context; - _theme = Ioc.Default.GetRequiredService(); } public List Query(Query query)