blob: ede2f66d31c7fe09588ce0611f0a642de3ee15b5 [file] [log] [blame]
Ian Hicksonae5c3d52017-08-01 14:23:44 -07001// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'package:flutter/material.dart';
6import 'package:flutter/widgets.dart';
7import 'package:flutter_driver/driver_extension.dart';
8
9void main() {
Chris Bracken4509b152018-05-06 18:00:35 -070010 enableFlutterDriverExtension();
Ian Hicksonae5c3d52017-08-01 14:23:44 -070011 runApp(new DriverTestApp());
12}
13
14class DriverTestApp extends StatefulWidget {
15 @override
16 State<StatefulWidget> createState() {
17 return new DriverTestAppState();
18 }
19}
20
21class DriverTestAppState extends State<DriverTestApp> {
22 bool present = true;
Yegorba5b5e72017-09-11 09:46:42 -070023 Letter _selectedValue = Letter.a;
Ian Hicksonae5c3d52017-08-01 14:23:44 -070024
25 @override
26 Widget build(BuildContext context) {
27 return new MaterialApp(
28 home: new Scaffold(
29 appBar: new AppBar(
30 title: const Text('FlutterDriver test'),
31 ),
32 body: new ListView(
33 padding: const EdgeInsets.all(5.0),
34 children: <Widget>[
35 new Row(
36 children: <Widget>[
37 new Expanded(
38 child: new Text(present ? 'present' : 'absent'),
39 ),
40 new RaisedButton(
41 child: const Text(
42 'toggle',
Todd Volkert00aac682018-07-27 08:44:39 -070043 key: const ValueKey<String>('togglePresent'),
Ian Hicksonae5c3d52017-08-01 14:23:44 -070044 ),
45 onPressed: () {
46 setState(() {
47 present = !present;
48 });
49 },
50 ),
51 ],
52 ),
Yegorba5b5e72017-09-11 09:46:42 -070053 new Row(
54 children: <Widget>[
55 const Expanded(
Todd Volkert00aac682018-07-27 08:44:39 -070056 child: const Text('hit testability'),
Yegorba5b5e72017-09-11 09:46:42 -070057 ),
58 new DropdownButton<Letter>(
59 key: const ValueKey<String>('dropdown'),
60 value: _selectedValue,
61 onChanged: (Letter newValue) {
62 setState(() {
63 _selectedValue = newValue;
64 });
65 },
Alexandre Ardhuin0fe1e5b2018-01-11 08:38:55 +010066 items: const <DropdownMenuItem<Letter>>[
Todd Volkert00aac682018-07-27 08:44:39 -070067 const DropdownMenuItem<Letter>(
Yegorba5b5e72017-09-11 09:46:42 -070068 value: Letter.a,
Todd Volkert00aac682018-07-27 08:44:39 -070069 child: const Text('Aaa', key: const ValueKey<String>('a')),
Yegorba5b5e72017-09-11 09:46:42 -070070 ),
Todd Volkert00aac682018-07-27 08:44:39 -070071 const DropdownMenuItem<Letter>(
Yegorba5b5e72017-09-11 09:46:42 -070072 value: Letter.b,
Todd Volkert00aac682018-07-27 08:44:39 -070073 child: const Text('Bbb', key: const ValueKey<String>('b')),
Yegorba5b5e72017-09-11 09:46:42 -070074 ),
Todd Volkert00aac682018-07-27 08:44:39 -070075 const DropdownMenuItem<Letter>(
Yegorba5b5e72017-09-11 09:46:42 -070076 value: Letter.c,
Todd Volkert00aac682018-07-27 08:44:39 -070077 child: const Text('Ccc', key: const ValueKey<String>('c')),
Yegorba5b5e72017-09-11 09:46:42 -070078 ),
79 ],
80 ),
81 ],
82 ),
Yegore27bcd02017-12-06 17:29:37 -080083 const TextField(
Todd Volkert00aac682018-07-27 08:44:39 -070084 key: const ValueKey<String>('enter-text-field'),
Yegore27bcd02017-12-06 17:29:37 -080085 ),
Ian Hicksonae5c3d52017-08-01 14:23:44 -070086 ],
87 ),
88 ),
89 );
90 }
91}
Yegorba5b5e72017-09-11 09:46:42 -070092
93enum Letter { a, b, c }