// 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(handler: (String message) async {
    // TODO(cbernaschina): remove when test flakiness is resolved
    return 'keyboard_resize';
  });
  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> {
  final 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: Alignment.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: const Icon(Icons.done),
      ),
    );
  }
}
