Ian Hickson | ae5c3d5 | 2017-08-01 14:23:44 -0700 | [diff] [blame] | 1 | // 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 | |
| 5 | import 'package:flutter/material.dart'; |
| 6 | import 'package:flutter/widgets.dart'; |
| 7 | import 'package:flutter_driver/driver_extension.dart'; |
| 8 | |
| 9 | void main() { |
Chris Bracken | 4509b15 | 2018-05-06 18:00:35 -0700 | [diff] [blame] | 10 | enableFlutterDriverExtension(); |
Ian Hickson | ae5c3d5 | 2017-08-01 14:23:44 -0700 | [diff] [blame] | 11 | runApp(new DriverTestApp()); |
| 12 | } |
| 13 | |
| 14 | class DriverTestApp extends StatefulWidget { |
| 15 | @override |
| 16 | State<StatefulWidget> createState() { |
| 17 | return new DriverTestAppState(); |
| 18 | } |
| 19 | } |
| 20 | |
| 21 | class DriverTestAppState extends State<DriverTestApp> { |
| 22 | bool present = true; |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 23 | Letter _selectedValue = Letter.a; |
Ian Hickson | ae5c3d5 | 2017-08-01 14:23:44 -0700 | [diff] [blame] | 24 | |
| 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 Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 43 | key: const ValueKey<String>('togglePresent'), |
Ian Hickson | ae5c3d5 | 2017-08-01 14:23:44 -0700 | [diff] [blame] | 44 | ), |
| 45 | onPressed: () { |
| 46 | setState(() { |
| 47 | present = !present; |
| 48 | }); |
| 49 | }, |
| 50 | ), |
| 51 | ], |
| 52 | ), |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 53 | new Row( |
| 54 | children: <Widget>[ |
| 55 | const Expanded( |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 56 | child: const Text('hit testability'), |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 57 | ), |
| 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 Ardhuin | 0fe1e5b | 2018-01-11 08:38:55 +0100 | [diff] [blame] | 66 | items: const <DropdownMenuItem<Letter>>[ |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 67 | const DropdownMenuItem<Letter>( |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 68 | value: Letter.a, |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 69 | child: const Text('Aaa', key: const ValueKey<String>('a')), |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 70 | ), |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 71 | const DropdownMenuItem<Letter>( |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 72 | value: Letter.b, |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 73 | child: const Text('Bbb', key: const ValueKey<String>('b')), |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 74 | ), |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 75 | const DropdownMenuItem<Letter>( |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 76 | value: Letter.c, |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 77 | child: const Text('Ccc', key: const ValueKey<String>('c')), |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 78 | ), |
| 79 | ], |
| 80 | ), |
| 81 | ], |
| 82 | ), |
Yegor | e27bcd0 | 2017-12-06 17:29:37 -0800 | [diff] [blame] | 83 | const TextField( |
Todd Volkert | 00aac68 | 2018-07-27 08:44:39 -0700 | [diff] [blame^] | 84 | key: const ValueKey<String>('enter-text-field'), |
Yegor | e27bcd0 | 2017-12-06 17:29:37 -0800 | [diff] [blame] | 85 | ), |
Ian Hickson | ae5c3d5 | 2017-08-01 14:23:44 -0700 | [diff] [blame] | 86 | ], |
| 87 | ), |
| 88 | ), |
| 89 | ); |
| 90 | } |
| 91 | } |
Yegor | ba5b5e7 | 2017-09-11 09:46:42 -0700 | [diff] [blame] | 92 | |
| 93 | enum Letter { a, b, c } |