带有平台分支的 Flutter 小部件测试

标签 flutter

在我的小部件代码中,我需要在 Android/iOS 上进行分支以显示特定于每个平台的小部件,并调用特定于平台的 API(例如,Android 小部件将调用仅在 Android 上可用的 API)。

  if (Platform.isAndroid) {
    return WidgetAndroid(...);
  } else if (Platform.isIOS) {
    return WidgetIOS(...);
  }

如何使用 Flutter 小部件测试来测试是否显示了正确的小部件?

我知道我可以检查小部件是否存在,但如何使用特定平台运行测试。
expect(find.byType(WidgetIOS), findsOneWidget);

最佳答案

两者 Platform.isAndroidPlatform.isIOS返回 false运行时 testWidgets .

我们可以在测试中应用的一些建议:

  • 将平台作为变量传递给您的顶级 Widget,这样您就可以手动提供该值。
  • 说明您要测试 else没有 if ,以便在测试期间运行。
  • 改用 Platform来自 https://pub.dev/packages/platform这允许模拟,这可能是最好的长期解决方案。
  • 关于带有平台分支的 Flutter 小部件测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55233853/

    相关文章:

    json - For循环仅返回第一个json对象Flutter

    animation - 如何使用 Flutter 更改导航动画

    flutter -- 创建移动应用程序时对象创建顺序是什么?

    flutter - 没有国家管理的申请有什么危险

    flutter - 我想在启动画面中添加背景音频。所以尝试了下面的代码。但我有一些异常(exception)。 ( flutter )

    api - 为什么我的 FutureBuilder 不返回任何数据?

    ios - Android Studio Flutter 调试时禁用断点

    flutter - 我似乎无法理解的错误

    listview - 如何通过 Flutter 中的 RaisedButton 传递/绑定(bind)值?

    android - 为什么某些应用无法使用 Android Studio 的模拟器工具窗口?