SliverAppBar在小部件测试中不浮动

时间:2020-04-02 20:13:44

标签: flutter flutter-test

我正在为屏幕编写小部件测试,其中一项要求是对SliverAppBar的浮动行为进行测试。但是,我无法进行测试,因为SliverAppBar不会浮动,尽管在真实设备上运行时相同的代码也可以正常工作。

为了在测试过程中可视化当前屏幕,我将屏幕与黄金文件(不存在)进行比较,并使用flutter test --update-goldens运行测试,以使测试创建黄金文件,并确保{ {1}}未出现在SliverAppBar中。 HomePage_golden_scroll3.png仅在完全向后滚动时显示(即,其行为就像SliverAppBarfloating

由于它可以在真实设备上正常工作,所以我想知道测试有什么问题吗?

false

1 个答案:

答案 0 :(得分:0)

您可以通过将“ position.jumpTo()”更改为滚动手势来解决此问题:

await tester.pumpWidget(MaterialApp(home: HomePage()));
await expectLater(find.byType(HomePage),
    matchesGoldenFile('HomePage_golden.png'));
expect(find.byType(SliverAppBar), findsOneWidget);

final gesture = await tester.startGesture(Offset(0, 300)); 
await gesture.moveBy(Offset(0, -300));
await tester.pump();
await expectLater(find.byType(HomePage),
    matchesGoldenFile('HomePage_golden_scroll.png'));
expect(find.byType(SliverAppBar), findsNothing);

await gesture.moveBy(Offset(0, 100));
await tester.pump();
await expectLater(find.byType(HomePage),
    matchesGoldenFile('HomePage_golden_scroll_back.png'));
expect(find.byType(SliverAppBar), findsOneWidget);