在我的小部件代码中,我需要在 Android/iOS 上进行分支,以显示特定于每个平台的小部件,并调用特定于平台的 API(例如,Android 小部件将调用仅在 Android 上可用的 API)。
if (Platform.isAndroid) {
return WidgetAndroid(...);
} else if (Platform.isIOS) {
return WidgetIOS(...);
}
Run Code Online (Sandbox Code Playgroud)
如何使用 Flutter 小部件测试来测试是否显示正确的小部件?
我知道我可以检查该小部件是否存在,但如何在特定平台上运行测试。
expect(find.byType(WidgetIOS), findsOneWidget);
Run Code Online (Sandbox Code Playgroud)
Max*_*lin 27
2022年不建议使用dart:ioand Platformclass来确定运行平台。更好的选择是defaultTargetPlatform通过“package:flutter/foundation.dart”使用可用的。IE:
if (defaultTargetPlatform == TargetPlatform.android ||
defaultTargetPlatform == TargetPlatform.iOS) {}
Run Code Online (Sandbox Code Playgroud)
如果您有这种方法来确定代码中的平台覆盖测试中的平台,那么就像debugDefaultTargetPlatformOverride在测试主体中设置一样简单。
https://api.flutter.dev/flutter/foundation/debugDefaultTargetPlatformOverride.html
例如:
testWidgets('DataTable2 renders with DataRow.index()',
(WidgetTester tester) async {
debugDefaultTargetPlatformOverride = TargetPlatform.android;
...
debugDefaultTargetPlatformOverride = null;
});
Run Code Online (Sandbox Code Playgroud)
Mig*_*ran 11
运行时和Platform.isAndroid返回Platform.isIOS。falsetestWidgets
我们可以在测试中应用一些建议:
elsewithout if,以便在测试期间运行。Platform来代替,它允许模拟,这可能是最好的长期解决方案。| 归档时间: |
|
| 查看次数: |
7576 次 |
| 最近记录: |