После некоторого обсуждения Original Post нам нужно было открыть новый вопрос для ответа из-за проблемы, обнаруженной с iOS .
Проблема:
После попытки и устранения неполадок с результатами асинхронный код iOS не делает 'не работает правильно. Хотя Android работает нормально, приведенный ниже код в App()
, похоже, не работает правильно для iOS , так как у меня, по-видимому, не может быть await -ablesв App()
, который необходим для получения правильной окраски при навигации.
Theme theme = await DependencyService.Get<IEnvironment>().GetOperatingSystemTheme();
даже при использовании _ = GetOperatingSystemTheme().ConfigureAwait(true);
в App()
код не вызывается, и поэтому тема неустановить:
public static async Task<Theme> GetOperatingSystemThemeAsync()
{
Theme systemTheme = await DependencyService.Get<IEnvironment>().GetOperatingSystemTheme().ConfigureAwait(true);
SetTheme(systemTheme);
return systemTheme;
}
И проблема при попытке использовать его для iOS:
Использование этого не асинхронного кода Environment_iOS и SetTheme () в строке 53 приложения.cs Я получил
System.NullReferenceException Message = Ссылка на объект не установлена на экземпляр объекта ". в строке" UIViewControllerrootController = UIApplication.SharedApplication.KeyWindow.RootViewController;
Если вы не вызываете его в App()
, а вместо этого только в App.OnStart()
, эта проблема мигания возникает .
Результаты поиска и устранения неисправностей:
Независимо от того, какое значение по умолчанию установлено в вашем приложении,Это будет мигать, когда происходит навигация. Другими словами, белый фон по умолчанию будет мигать, прежде чем страница будет переведена в темный режим. Установка значений по умолчанию (какие бы цвета для фона не требовались. Т. Е. App.Current.Resources = new DarkModeTheme()
для темных страниц) перед вызовом страницы (т. Е. SomePage()
) дает правильные результаты, как это должно быть сделано до навигации и отображения страницы.
Пример репозитория: https://github.com/Jakar510/FlickerTest