Fix PointerAddedEvent handling in LiveTestWidgetsFlutterBinding (#61102)

* Fix PointerAddedEvent handling in tester
This commit is contained in:
Ming Lyu (CareF) 2020-07-08 13:28:51 -04:00 committed by GitHub
parent cc1af3afb6
commit 61477b5949
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

View File

@ -1433,8 +1433,11 @@ class LiveTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding {
switch (source) {
case TestBindingEventSource.test:
if (!renderView._pointers.containsKey(event.pointer)) {
assert(event.down);
renderView._pointers[event.pointer] = _LiveTestPointerRecord(event.pointer, event.position);
assert(event.down || event is PointerAddedEvent);
if (event.down) {
renderView._pointers[event.pointer] = _LiveTestPointerRecord(
event.pointer, event.position);
}
} else {
renderView._pointers[event.pointer].position = event.position;
if (!event.down)

View File

@ -0,0 +1,19 @@
// 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';
// This file is for testings that require a `LiveTestWidgetsFlutterBinding`
void main() {
LiveTestWidgetsFlutterBinding();
testWidgets('Input PointerAddedEvent', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: Text('Test')));
await tester.pump();
final TestGesture gesture = await tester.createGesture();
// This mimics the start of a gesture as seen on a device, where inputs
// starts with a PointerAddedEvent.
await gesture.addPointer();
});
}