CallbackShortcuts | Flutter
- CallbackShortcuts | Flutter
No Flutter, CallbackShortcuts é um widget que faz parte do sistema de atalhos de teclado e ações (Shortcuts and Actions), introduzido para permitir a construção de interfaces reativas a comandos de teclado, o que é especialmente útil em apps desktop ou web, mas também pode ser aproveitado em contextos mobile com teclados físicos.
📌 O que é CallbackShortcuts?
CallbackShortcuts permite mapear combinações de teclas diretamente para funções de callback, sem a necessidade de criar uma Intent e uma Action separadas (o que seria necessário com Shortcuts e Actions tradicionais).
✅ Exemplo simples
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: CallbackShortcutsExample(),
);
}
}
class CallbackShortcutsExample extends StatefulWidget {
State<CallbackShortcutsExample> createState() => _CallbackShortcutsExampleState();
}
class _CallbackShortcutsExampleState extends State<CallbackShortcutsExample> {
String _message = 'Pressione Ctrl + K';
void _handleShortcut() {
setState(() {
_message = 'Atalho Ctrl + K pressionado!';
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('CallbackShortcuts Example')),
body: Center(
child: CallbackShortcuts(
bindings: <ShortcutActivator, VoidCallback>{
LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyK): _handleShortcut,
},
child: Focus(
autofocus: true,
child: Text(_message),
),
),
),
);
}
}
🔍 Comparando com Shortcuts + Actions
Antes do CallbackShortcuts, seria necessário algo assim:
- Criar uma
Intent - Criar uma
Actionpara essaIntent - Usar
Shortcutspara mapear tecla →Intent - Usar
Actionspara mapearIntent→Action
Com CallbackShortcuts, tudo isso é reduzido para apenas um mapeamento direto entre tecla e função.
🚨 Importante
- O widget filho precisa estar dentro de um
FocusouFocusableActionDetectore estar focado para que os atalhos funcionem. - Funciona melhor em plataformas com teclado: web, desktop (Windows, macOS, Linux).
Quer que eu monte um exemplo com múltiplos atalhos ou integração com comandos mais complexos?