set_state_1_test.dart 1.8 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
Hixie's avatar
Hixie committed
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
// @dart = 2.8

Adam Barth's avatar
Adam Barth committed
7
import 'package:flutter_test/flutter_test.dart';
8
import 'package:flutter/widgets.dart';
9

10
class Inside extends StatefulWidget {
11
  const Inside({ Key key }) : super(key: key);
12
  @override
13
  InsideState createState() => InsideState();
14
}
15

16
class InsideState extends State<Inside> {
17
  @override
18
  Widget build(BuildContext context) {
19
    return Listener(
20
      onPointerDown: _handlePointerDown,
Ian Hickson's avatar
Ian Hickson committed
21
      child: const Text('INSIDE', textDirection: TextDirection.ltr),
22 23 24
    );
  }

25
  void _handlePointerDown(PointerDownEvent event) {
26 27 28 29
    setState(() { });
  }
}

30
class Middle extends StatefulWidget {
31 32 33 34
  const Middle({
    Key key,
    this.child,
  }) : super(key: key);
35

36
  final Inside child;
37

38
  @override
39
  MiddleState createState() => MiddleState();
40 41 42
}

class MiddleState extends State<Middle> {
43
  @override
44
  Widget build(BuildContext context) {
45
    return Listener(
46
      onPointerDown: _handlePointerDown,
Ian Hickson's avatar
Ian Hickson committed
47
      child: widget.child,
48 49 50
    );
  }

51
  void _handlePointerDown(PointerDownEvent event) {
52 53
    setState(() { });
  }
54
}
55

56
class Outside extends StatefulWidget {
57
  const Outside({ Key key }) : super(key: key);
58
  @override
59
  OutsideState createState() => OutsideState();
60 61
}

62
class OutsideState extends State<Outside> {
63
  @override
64
  Widget build(BuildContext context) {
65
    return const Middle(child: Inside());
66 67 68 69
  }
}

void main() {
70
  testWidgets('setState() smoke test', (WidgetTester tester) async {
71
    await tester.pumpWidget(const Outside());
72
    final Offset location = tester.getCenter(find.text('INSIDE'));
73
    final TestGesture gesture = await tester.startGesture(location);
74 75 76
    await tester.pump();
    await gesture.up();
    await tester.pump();
77
  });
Adam Barth's avatar
Adam Barth committed
78
}