// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; const double kHeight = 10.0; const double kFlingOffset = kHeight * 20.0; void main() { testWidgets("Flings don't stutter", (WidgetTester tester) async { await tester.pumpWidget( Directionality( textDirection: TextDirection.ltr, child: ListView.builder( itemBuilder: (BuildContext context, int index) { return Container(height: kHeight); }, ), ), ); double getCurrentOffset() { return tester.state<ScrollableState>(find.byType(Scrollable)).position.pixels; } await tester.fling(find.byType(ListView), const Offset(0.0, -kFlingOffset), 1000.0); expect(getCurrentOffset(), kFlingOffset); await tester.pump(); // process the up event while (tester.binding.transientCallbackCount > 0) { final double lastOffset = getCurrentOffset(); await tester.pump(const Duration(milliseconds: 20)); expect(getCurrentOffset(), greaterThan(lastOffset)); } }); }