0

我想为我的应用程序引入全平台适应性。目前我Material用于 iOS 和 Android 版本。我想根据检测到的平台显示适当版本的 Widget,但我不想像下面的代码示例所示那样执行此操作,因为我必须对现有应用程序执行多次。

解决方案#1

 return Theme.of(context).targetPlatform = TargetPlatform.iOS
        ? CupertinoTextField(
            ...)
        : TextField(
            ...)

解决方案#2 幸运的是,有一些像adaptive命名构造函数这样的小部件,Switch.adaptive并且非常适合我。不幸的是,您可以用一只手的手指数数。

解决方案 #3 使用 3rd 方库和。例如,我可以PlatformButton在可能的情况下使用,而不关心引擎盖下发生了什么。

flutter_platform_widgets 1.10.0

解决方案 #4根据本教程为每个小部件 编写自定义平台特定包装器。


问题 #1 考虑到时间和可测试性,哪种解决方案是最好的?我是 Flutter 带有命名构造函数的小部件的忠实粉丝,.adaptive但我等不及 Flutter 开发团队提供更多类似的小部件

问题 #2 如何使用 Firebase 测试实验室处理针对 iOS 特定小部件的测试?我是否应该编写单元测试来检查是否呈现了正确的 iOS 版本的小部件?我看没有别的办法。

4

0 回答 0