使用Xamarin.Forms 4.3.0.947036在Android和iOS上实现正常模式和暗模式,而没有闪烁

雅加510

在对原始帖子进行了一些讨论之后,由于iOS出现问题,我们需要为其回答打开一个新问题


问题:

尝试执行此操作并对结果进行故障排除后,iOS 异步代码无法正常运行。虽然Android可以正常运行,但是下面的代码App()似乎无法在iOS上正常工作,因为我显然无法其中等待-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代码App.cs第53行的SetTheme(),我得到了一个

System.NullReferenceException Message =“对象引用未设置为对象的实例”。在“ UIViewController rootController = UIApplication.SharedApplication.KeyWindow.RootViewController;

如果您不叫它App()而只叫它App.OnStart()就会出现这个闪烁的问题

故障排除结果:

无论您的应用程序中的默认设置是什么,它将在导航发生时闪烁。换句话说,在页面呈现为暗模式之前,默认的白色背景将闪烁。App.Current.Resources = new DarkModeTheme()调用页面(即SomePage()之前设置默认值(所需背景的各种颜色,即深色页面)会产生正确的结果,因为必须在导航和呈现页面之前完成此操作。

示例存储库:https : //github.com/Jakar510/FlickerTest

布兰登·明尼克(Brandon Minnick)

问题

UIApplication.SharedApplication.KeyWindow 为null,因为Xamarin.Forms尚未生成它。

将呼叫UIApplication.SharedApplication.KeyWindow从的构造函数Xamarin.Forms.Application移到Xamarin.Forms.Application.OnStart()

我还向您发送了一个PR,该PR实现了此修复程序,还正确地为您的Light Theme和Dark Theme实现了MergedDictionaries:https : //github.com/Jakar510/FlickerTest/pull/1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Autofac 4+ 在 iOS 中使用 Xamarin.Forms 无法构建

来自分类Dev

没有第3方库的xamarin.forms授权

来自分类Dev

Xamarin Forms,Sqlite,EF Core 3,迁移和大量混淆

来自分类Dev

如何将 Xamarin.Forms 与 Xamarin.Android 和 Xamarin.IOS 结合使用?

来自分类Dev

在c3p0和Hibernate中使用slf4j

来自分类Dev

如何使用 Xamarin.Forms 在 iOS 和 Android 应用程序中实现 Docusign?

来自分类Dev

创建序列0、0、0、0、0、1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、4、4、4、4、4 ,带有seq()的4

来自分类Dev

[0,1,2,3,4]和[[0],[1],[2],[3],[4]]和有什么区别?

来自分类Dev

ValueError: 形状 (4,4) 和 (3,) 未对齐:4 (dim 1) != 3 (dim 0)

来自分类Dev

如何在Xamarin.Forms中强制使用灯光模式?

来自分类Dev

Xamarin Forms - 使用 SQLite

来自分类Dev

Xamarin Forms和TabGestureRecognizer不能使用Command触发

来自分类Dev

无法使用 MSTest 和 Prism 设置 Xamarin Forms Unit Test

来自分类Dev

使用 Xamarin Forms 和 Prism 绑定 SkiaSharp 的 PaintSurface

来自分类Dev

处理 xamarin.forms 上的 iOS 和 Android 差异

来自分类Dev

在ng-grid和firebase / angularFire上添加行时,有没有一种方法可以使用增量ID(例如0、1、2、3、4)?

来自分类Dev

Xamarin.Forms StackLayout分为3列

来自分类Dev

使用xamarin.forms实现地理围栏

来自分类Dev

无法使用 Xamarin Forms 连接到 iOs 模拟器

来自分类Dev

无法使用Xamarin.forms在图像上添加标签?

来自分类Dev

无法使用Xamarin.forms在图像上添加标签?

来自分类Dev

在带有OpenGL的Xamarin(.Forms)中应该使用哪个框架?

来自分类Dev

如何在Xamarin Forms PCL中使用本机Android ImageView?

来自分类Dev

如何在Xamarin.Forms中使用Android控件

来自分类Dev

Android 子页面上的 FindViewById(使用 Xamarin.Forms)

来自分类Dev

如何构建使用 Xamarin.Forms.Maps 的 Android 项目?

来自分类Dev

Xamarin Forms - 使用资源/布局中的相对布局的 Android 按钮

来自分类Dev

Xamarin.Forms实现AndHud和BTProgressHud

来自分类Dev

Xamarin Forms-Xamarin Forms导航栏在Android上滚动

Related 相关文章

  1. 1

    Autofac 4+ 在 iOS 中使用 Xamarin.Forms 无法构建

  2. 2

    没有第3方库的xamarin.forms授权

  3. 3

    Xamarin Forms,Sqlite,EF Core 3,迁移和大量混淆

  4. 4

    如何将 Xamarin.Forms 与 Xamarin.Android 和 Xamarin.IOS 结合使用?

  5. 5

    在c3p0和Hibernate中使用slf4j

  6. 6

    如何使用 Xamarin.Forms 在 iOS 和 Android 应用程序中实现 Docusign?

  7. 7

    创建序列0、0、0、0、0、1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、4、4、4、4、4 ,带有seq()的4

  8. 8

    [0,1,2,3,4]和[[0],[1],[2],[3],[4]]和有什么区别?

  9. 9

    ValueError: 形状 (4,4) 和 (3,) 未对齐:4 (dim 1) != 3 (dim 0)

  10. 10

    如何在Xamarin.Forms中强制使用灯光模式?

  11. 11

    Xamarin Forms - 使用 SQLite

  12. 12

    Xamarin Forms和TabGestureRecognizer不能使用Command触发

  13. 13

    无法使用 MSTest 和 Prism 设置 Xamarin Forms Unit Test

  14. 14

    使用 Xamarin Forms 和 Prism 绑定 SkiaSharp 的 PaintSurface

  15. 15

    处理 xamarin.forms 上的 iOS 和 Android 差异

  16. 16

    在ng-grid和firebase / angularFire上添加行时,有没有一种方法可以使用增量ID(例如0、1、2、3、4)?

  17. 17

    Xamarin.Forms StackLayout分为3列

  18. 18

    使用xamarin.forms实现地理围栏

  19. 19

    无法使用 Xamarin Forms 连接到 iOs 模拟器

  20. 20

    无法使用Xamarin.forms在图像上添加标签?

  21. 21

    无法使用Xamarin.forms在图像上添加标签?

  22. 22

    在带有OpenGL的Xamarin(.Forms)中应该使用哪个框架?

  23. 23

    如何在Xamarin Forms PCL中使用本机Android ImageView?

  24. 24

    如何在Xamarin.Forms中使用Android控件

  25. 25

    Android 子页面上的 FindViewById(使用 Xamarin.Forms)

  26. 26

    如何构建使用 Xamarin.Forms.Maps 的 Android 项目?

  27. 27

    Xamarin Forms - 使用资源/布局中的相对布局的 Android 按钮

  28. 28

    Xamarin.Forms实现AndHud和BTProgressHud

  29. 29

    Xamarin Forms-Xamarin Forms导航栏在Android上滚动

热门标签

归档