parent
bc0cbc15d6
commit
6058e95919
61
examples/api/lib/widgets/shortcuts/callback_shortcuts.0.dart
Normal file
61
examples/api/lib/widgets/shortcuts/callback_shortcuts.0.dart
Normal file
@ -0,0 +1,61 @@
|
||||
// Copyright 2014 The Flutter 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/services.dart';
|
||||
|
||||
/// Flutter code sample for [CallbackShortcuts].
|
||||
|
||||
void main() => runApp(const CallbackShortcutsApp());
|
||||
|
||||
class CallbackShortcutsApp extends StatelessWidget {
|
||||
const CallbackShortcutsApp({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(title: const Text('CallbackShortcuts Sample')),
|
||||
body: const Center(
|
||||
child: CallbackShortcutsExample(),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CallbackShortcutsExample extends StatefulWidget {
|
||||
const CallbackShortcutsExample({super.key});
|
||||
|
||||
@override
|
||||
State<CallbackShortcutsExample> createState() => _CallbackShortcutsExampleState();
|
||||
}
|
||||
|
||||
class _CallbackShortcutsExampleState extends State<CallbackShortcutsExample> {
|
||||
int count = 0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CallbackShortcuts(
|
||||
bindings: <ShortcutActivator, VoidCallback>{
|
||||
const SingleActivator(LogicalKeyboardKey.arrowUp): () {
|
||||
setState(() => count = count + 1);
|
||||
},
|
||||
const SingleActivator(LogicalKeyboardKey.arrowDown): () {
|
||||
setState(() => count = count - 1);
|
||||
},
|
||||
},
|
||||
child: Focus(
|
||||
autofocus: true,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
const Text('Press the up arrow key to add to the counter'),
|
||||
const Text('Press the down arrow key to subtract from the counter'),
|
||||
Text('count: $count'),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
// Copyright 2014 The Flutter 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/services.dart';
|
||||
import 'package:flutter_api_samples/widgets/shortcuts/callback_shortcuts.0.dart' as example;
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('CallbackShortcutsApp increments and decrements', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
const example.CallbackShortcutsApp(),
|
||||
);
|
||||
|
||||
expect(find.text('count: 0'), findsOneWidget);
|
||||
|
||||
// Increment the counter.
|
||||
await tester.sendKeyEvent(LogicalKeyboardKey.arrowUp);
|
||||
await tester.pump();
|
||||
|
||||
expect(find.text('count: 1'), findsOneWidget);
|
||||
|
||||
// Decrement the counter.
|
||||
await tester.sendKeyEvent(LogicalKeyboardKey.arrowDown);
|
||||
await tester.pump();
|
||||
|
||||
expect(find.text('count: 0'), findsOneWidget);
|
||||
});
|
||||
}
|
@ -1057,6 +1057,13 @@ class _ShortcutsState extends State<Shortcuts> {
|
||||
/// deletion intent may be to delete a character in a text input, or to delete
|
||||
/// a file in a file menu.
|
||||
///
|
||||
/// {@tool dartpad}
|
||||
/// This example uses the [CallbackShortcuts] widget to add and subtract
|
||||
/// from a counter when the up or down arrow keys are pressed.
|
||||
///
|
||||
/// ** See code in examples/api/lib/widgets/shortcuts/callback_shortcuts.0.dart **
|
||||
/// {@end-tool}
|
||||
///
|
||||
/// [Shortcuts] and [CallbackShortcuts] can both be used in the same app. As
|
||||
/// with any key handling widget, if this widget handles a key event then
|
||||
/// widgets above it in the focus chain will not receive the event. This means
|
||||
|
Loading…
x
Reference in New Issue
Block a user