keyboard_resize.dart 1.79 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
// 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() {
11
  enableFlutterDriverExtension(handler: (String message) async {
12
    // TODO(cbernaschina): remove when test flakiness is resolved
13 14
    return 'keyboard_resize';
  });
15
  runApp(MyApp());
16 17 18 19 20
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
21
    return MaterialApp(
22
      title: 'Text Editing',
23 24
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
25 26 27 28 29 30
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
31
  _MyHomePageState createState() => _MyHomePageState();
32 33 34
}

class _MyHomePageState extends State<MyHomePage> {
35
  final TextEditingController _controller = TextEditingController();
36 37 38

  @override
  Widget build(BuildContext context) {
39
    final TextField textField = TextField(
40 41
      key: const Key(keys.kDefaultTextField),
      controller: _controller,
42
      focusNode: FocusNode(),
43
    );
44 45
    return Scaffold(
      body: Stack(
46
        fit: StackFit.expand,
47
        alignment: Alignment.bottomCenter,
48
        children: <Widget>[
49
          LayoutBuilder(
50
            builder: (BuildContext context, BoxConstraints constraints) {
51
              return Center(child: Text('${constraints.biggest.height}', key: const Key(keys.kHeightText)));
52 53 54 55 56
            }
          ),
          textField,
        ],
      ),
57
      floatingActionButton: FloatingActionButton(
58 59 60
        key: const Key(keys.kUnfocusButton),
        onPressed: () { textField.focusNode.unfocus(); },
        tooltip: 'Unfocus',
61
        child: const Icon(Icons.done),
62 63 64 65
      ),
    );
  }
}