mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Raw keyboard example
This commit is contained in:
parent
05ad96a1b4
commit
b79c78c05e
78
examples/widgets/raw_keyboard.dart
Normal file
78
examples/widgets/raw_keyboard.dart
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
// Copyright (c) 2015, the Flutter project authors. Please see the AUTHORS file
|
||||||
|
// for details. 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/services.dart';
|
||||||
|
|
||||||
|
import 'package:sky_services/raw_keyboard/raw_keyboard.mojom.dart' as mojo;
|
||||||
|
import 'package:sky_services/sky/input_event.mojom.dart' as mojo;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
runApp(
|
||||||
|
new MaterialApp(
|
||||||
|
title: "Hardware Key Demo",
|
||||||
|
routes: {
|
||||||
|
'/': (RouteArguments args) => const HardwareKeyDemo()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
class HardwareKeyDemo extends StatefulComponent {
|
||||||
|
const HardwareKeyDemo();
|
||||||
|
HardwareKeyDemoState createState() => new HardwareKeyDemoState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class HardwareKeyDemoState extends State<HardwareKeyDemo> implements mojo.RawKeyboardListener {
|
||||||
|
|
||||||
|
mojo.InputEvent _event = null;
|
||||||
|
|
||||||
|
void initState() {
|
||||||
|
mojo.RawKeyboardServiceProxy rawKeyboardService = new mojo.RawKeyboardServiceProxy.unbound();
|
||||||
|
try {
|
||||||
|
shell.connectToService(null, rawKeyboardService);
|
||||||
|
mojo.RawKeyboardListenerStub listener = new mojo.RawKeyboardListenerStub.unbound()
|
||||||
|
..impl = this;
|
||||||
|
rawKeyboardService.ptr.addListener(listener);
|
||||||
|
} finally {
|
||||||
|
rawKeyboardService.close();
|
||||||
|
}
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
void onKey(mojo.InputEvent event) {
|
||||||
|
setState(() {
|
||||||
|
_event = event;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildBody() {
|
||||||
|
if (_event == null) {
|
||||||
|
return new Center(
|
||||||
|
child: new Text("Press a key", style: Typography.black.display1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return new Column([
|
||||||
|
new Text(
|
||||||
|
'${_event?.type}',
|
||||||
|
style: Typography.black.body2
|
||||||
|
),
|
||||||
|
new Text(
|
||||||
|
'${_event?.keyData?.keyCode}',
|
||||||
|
style: Typography.black.display4
|
||||||
|
)
|
||||||
|
], justifyContent: FlexJustifyContent.center);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return new Scaffold(
|
||||||
|
toolBar: new ToolBar(
|
||||||
|
center: new Text("Hardware Key Demo")
|
||||||
|
),
|
||||||
|
body: new Material(
|
||||||
|
child: _buildBody()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user