Comments (8)
- I reconfirmed that it works on main, but I need to add
WidgetsFlutterBinding.ensureInitialized()
- For hot reload,
HotKeyManager.instance.unregisterAll()
needs to be called; No element
error is fixed onmacOS
platform ,Windows
andLinux
platform will fixed later.
void main() {
+ WidgetsFlutterBinding.ensureInitialized();
final _hotkey = HotKey(
KeyCode.keyF,
modifiers: [KeyModifier.alt],
);
+ HotKeyManager.instance.unregisterAll();
HotKeyManager.instance.register(
_hotkey,
keyDownHandler: (hotKey) => print('keyDown'),
keyUpHandler: (hotKey) => print('keyUp'),
);
runApp(MyApp());
}
from hotkey_manager.
New version seems to be working good in my brief testing. Thanks!
Love that you've made it feel simple and seamless, great work ❤️
from hotkey_manager.
On linux platform it depends on keybinder-3.0
, You need to install it.
sudo apt-get install keybinder-3.0
from hotkey_manager.
Thanks! On Ubuntu-based distros this is:
sudo apt install libkeybinder-3.0-dev
Now it compiles correctly. 👍
On run however it throws an exception at instance.register()
:
final _hotkey = HotKey(
KeyCode.f6,
modifiers: [KeyModifier.control, KeyModifier.shift],
);
await HotKeyManager.instance.register(
_hotkey,
keyDownHandler: (hotKey) {
print('keyDown');
},
keyUpHandler: (hotKey) {
print('keyUp');
},
);
_CastError (Null check operator used on a null value)
#0 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:121:86)
#1 MethodChannel.setMethodCallHandler (package:flutter/src/services/platform_channel.dart:375:5)
#2 HotKeyManager._init (package:hotkey_manager/src/hotkey_manager.dart:28:14)
#3 HotKeyManager.register (package:hotkey_manager/src/hotkey_manager.dart:85:24)
#4 main (package:flutter_hotkey_demo/main.dart:12:32)
#5 _runMainZoned.. (dart:ui/hooks.dart:145:25)
#6 _rootRun (dart:async/zone.dart:1428:13)
#7 _CustomZone.run (dart:async/zone.dart:1328:19)
#8 _runZoned (dart:async/zone.dart:1863:10)
#9 runZonedGuarded (dart:async/zone.dart:1851:12)
#10 _runMainZoned. (dart:ui/hooks.dart:141:5)
#11 _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:283:19)
#12 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
from hotkey_manager.
Can you provide the code for flutter_hotkey_demo
from hotkey_manager.
Please don't use it in main function.
from hotkey_manager.
Alright, tried moving it out of main and it works some of the time. (Where do you recommend to initialize?)
"some of the time" because when it doesn't work; after hot reload I have seen it:
- Fire the call back 3 times per press of the hotkey
- Trigger an exception:
"No element"
Stacktrace:
#0 ListMixin.firstWhere (dart:collection/list.dart:167:5)
#1 HotKeyManager._methodCallHandler (package:hotkey_manager/src/hotkey_manager.dart:62:33)
#2 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:386:55)
#3 MethodChannel.setMethodCallHandler. (package:flutter/src/services/platform_channel.dart:379:34)
#4 _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:379:35)
#5 _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:376:46)
#6 _invoke2. (dart:ui/hooks.dart:205:15)
#7 _rootRun (dart:async/zone.dart:1428:13)
#8 _CustomZone.run (dart:async/zone.dart:1328:19)
#9 _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
#10 _invoke2 (dart:ui/hooks.dart:204:10)
#11 _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#12 _Channel.push (dart:ui/channel_buffers.dart:132:31)
#13 ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#14 PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:544:22)
#15 _dispatchPlatformMessage (dart:ui/hooks.dart:92:31)
Code is just from a new flutter project:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:hotkey_manager/hotkey_manager.dart';
Future<void> main() async {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(),
home: const HomePage(),
);
}
}
Future<void> startHotkey() async {
final _hotkey = HotKey(
KeyCode.f6,
modifiers: [KeyModifier.control, KeyModifier.shift],
);
await HotKeyManager.instance.register(
_hotkey,
keyDownHandler: (hotKey) => log('keyDown'),
keyUpHandler: (hotKey) => log('keyUp'),
);
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
void initState() {
super.initState();
startHotkey();
}
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Text('Hotkey test'),
),
);
}
}
By the way, is there a specific reason this requires Flutter, and doesn't support a dart application? I could see it being very useful for that use case as well.
from hotkey_manager.
Please upgrade to 0.1.0
dependencies:
hotkey_manager: ^0.1.0
from hotkey_manager.
Related Issues (20)
- [Windows] keyUpHandler is not being invoked HOT 3
- web suppport HOT 1
- 启动报错 HOT 1
- ALT+F4
- I registered the shift key using hotkey manager, but it does not work. HOT 1
- Phantom key presses HOT 1
- 请问如何拦截系统快捷键默认行为
- 注册应用级别的热键,在macOS上按下的时候会咚的一声 HOT 3
- backquote在windows上注册不能触发 HOT 1
- 无法注册系统级别热键
- global, single non-letter key hotkeys e.g `.` or `,` don't work on Windows HOT 1
- [Bug] HotKeyRecorder is not working with specific hotkeys
- background mode issue
- Error on line 1, column 7: "name" field doesn't match expected name "hotkey_manager". ╷ 1 │ name: hotkey_manager_workspace HOT 2
- Please upgrade the pub.dev version or just please make sure git install is right HOT 1
- It make the Android apk very huge HOT 1
- 快捷键影响输入框输入
- Register Alt+Q, and just pressing the Q key will also perform the keyDownHandler callback HOT 1
- Separate modifiers for left/right keys?
- 全局系统快捷键不生效,Deep v23 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hotkey_manager.