
Adds an initial integration test that: 1. captures laid-out widget size 2. focuses a text field to show the keyboard and resize the view 3. unfocuses the text field to dismiss the keyboard and resize the view 4. verify that the final widget size matches the initial size
63 lines
1.7 KiB
Dart
63 lines
1.7 KiB
Dart
// Copyright 2017 The Chromium 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_driver/driver_extension.dart';
|
|
|
|
import 'keys.dart' as keys;
|
|
|
|
void main() {
|
|
enableFlutterDriverExtension();
|
|
runApp(new MyApp());
|
|
}
|
|
|
|
class MyApp extends StatelessWidget {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return new MaterialApp(
|
|
title: 'Text Editing',
|
|
theme: new ThemeData(primarySwatch: Colors.blue),
|
|
home: new MyHomePage(),
|
|
);
|
|
}
|
|
}
|
|
|
|
class MyHomePage extends StatefulWidget {
|
|
@override
|
|
_MyHomePageState createState() => new _MyHomePageState();
|
|
}
|
|
|
|
class _MyHomePageState extends State<MyHomePage> {
|
|
TextEditingController _controller = new TextEditingController();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final TextField textField = new TextField(
|
|
key: const Key(keys.kDefaultTextField),
|
|
controller: _controller,
|
|
focusNode: new FocusNode(),
|
|
);
|
|
return new Scaffold(
|
|
body: new Stack(
|
|
fit: StackFit.expand,
|
|
alignment: FractionalOffset.bottomCenter,
|
|
children: <Widget>[
|
|
new LayoutBuilder(
|
|
builder: (BuildContext context, BoxConstraints constraints) {
|
|
return new Center(child: new Text('${constraints.biggest.height}', key: const Key(keys.kHeightText)));
|
|
}
|
|
),
|
|
textField,
|
|
],
|
|
),
|
|
floatingActionButton: new FloatingActionButton(
|
|
key: const Key(keys.kUnfocusButton),
|
|
onPressed: () { textField.focusNode.unfocus(); },
|
|
tooltip: 'Unfocus',
|
|
child: new Icon(Icons.done),
|
|
),
|
|
);
|
|
}
|
|
}
|