keyboard_resize.dart 1.84 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 12 13 14
  enableFlutterDriverExtension(handler: (String message) async {
    // TODO(cbernaschina) remove when test flakiness is resolved
    return 'keyboard_resize';
  });
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
  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> {
35
  final TextEditingController _controller = new TextEditingController();
36 37 38 39 40 41 42 43 44 45 46

  @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,
47
        alignment: Alignment.bottomCenter,
48 49 50 51 52 53 54 55 56 57 58 59 60
        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',
61
        child: const Icon(Icons.done),
62 63 64 65
      ),
    );
  }
}