// Copyright 2016 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:sky_services/sky/input_event.mojom.dart' as mojom; GlobalKey _key = new GlobalKey(); void main() { runApp(new MaterialApp( title: "Hardware Key Demo", home: new Scaffold( appBar: new AppBar( title: new Text("Hardware Key Demo") ), body: new Material( child: new RawKeyboardDemo( key: _key ) ) ) )); } class RawKeyboardDemo extends StatefulWidget { RawKeyboardDemo({ GlobalKey key }) : super(key: key); @override _HardwareKeyDemoState createState() => new _HardwareKeyDemoState(); } class _HardwareKeyDemoState extends State { mojom.InputEvent _event; void _handleKey(mojom.InputEvent event) { setState(() { _event = event; }); } @override Widget build(BuildContext context) { bool focused = Focus.at(context); Widget child; if (!focused) { child = new GestureDetector( onTap: () { Focus.moveTo(config.key); }, child: new Center( child: new Text('Tap to focus', style: Typography.black.display1) ) ); } else if (_event == null) { child = new Center( child: new Text('Press a key', style: Typography.black.display1) ); } else { child = new Column( children: [ new Text('${_event.type}', style: Typography.black.body2), new Text('${_event.keyData.keyCode}', style: Typography.black.display4) ], mainAxisAlignment: MainAxisAlignment.center ); } return new RawKeyboardListener( focused: focused, onKey: _handleKey, child: child ); } }