DefaultTextEditingShortcuts
snippet.packages.flutter.lib.src.widgets.default_text_editing_shortcuts.67.
// ignore_for_file: directives_ordering
// ignore_for_file: unnecessary_import
// ignore_for_file: unused_import
// ignore_for_file: unused_element
// ignore_for_file: unused_local_variable
import 'dart:async';
import 'dart:convert';
import 'dart:math' as math;
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/physics.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/animation.dart';
import 'package:flutter/services.dart';
// From: packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart:67
class IncrementCounterIntent extends Intent {}
class DecrementCounterIntent extends Intent {}
class MyWidget extends StatefulWidget {
const MyWidget({ Key? key }) : super(key: key);
@override
MyWidgetState createState() => MyWidgetState();
}
class MyWidgetState extends State {
int _counter = 0;
@override
Widget build(BuildContext context) {
// If using WidgetsApp or its descendents MaterialApp or CupertinoApp,
// then DefaultTextEditingShortcuts is already being inserted into the
// widget tree.
return DefaultTextEditingShortcuts(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
Shortcuts(
shortcuts: {
const SingleActivator(LogicalKeyboardKey.arrowUp): IncrementCounterIntent(),
const SingleActivator(LogicalKeyboardKey.arrowDown): DecrementCounterIntent(),
},
child: Actions(
actions: >{
IncrementCounterIntent: CallbackAction(
onInvoke: (IncrementCounterIntent intent) {
setState(() {
_counter++;
});
return null;
},
),
DecrementCounterIntent: CallbackAction(
onInvoke: (DecrementCounterIntent intent) {
setState(() {
_counter--;
});
return null;
},
),
},
child: const TextField(
maxLines: 2,
decoration: InputDecoration(
hintText: 'Up/down increment/decrement here.',
),
),
),
),
const TextField(
maxLines: 2,
decoration: InputDecoration(
hintText: 'Up/down behave normally here.',
),
),
],
),
),
);
}
}
SHARE: