Flutter键盘鼠标指示器插件keyboard_mouse_indicator的使用
Flutter键盘鼠标指示器插件keyboard_mouse_indicator的使用
键盘鼠标指示器
Keyboard Mouse Indicator
是一个漂亮的部件,用于显示鼠标和键盘事件。
特性
- 全局监听器,不依赖焦点即可监听鼠标和键盘事件。
- 显示事件的历史记录。
- 可自定义显示的历史记录项目数量。
- 显示当前按下的键(最小化键盘指示器)。
- 完全可定制的鼠标指示器。
- 可定制的键盘历史记录项目。
- 显示每个单独和组合事件的数量。
开始使用
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
keyboard_mouse_indicator: <latest_version>
使用方法
使用 KeyboardMouseIndicator
小部件来显示指示器。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
);
属性 | 描述 |
---|---|
controller |
控制指示器的控制器。 |
alignment |
指示器的对齐方式。这还会影响历史项文本的对齐方式。 |
showAsHistory |
是否将事件显示为历史记录或当前按下的键。如果设置为 false ,则显示当前按下的键。 |
mouseIndicator |
用于显示鼠标指示器的小部件。 |
maxLength |
显示的历史记录的最大长度。 |
fadeText |
是否使历史记录项的文本渐隐以产生消失效果。 |
itemSpacing |
历史记录项之间的间距。 |
showMouseIndicator |
是否显示鼠标指示器。 |
keyLabelBuilder |
构建键标签字符串的生成器。 |
itemBuilder |
构建历史记录项小部件的生成器。 |
这将显示最多 5 个键盘和鼠标事件的历史记录。
自定义
显示更多历史记录
默认情况下,该部件只显示 5 个事件作为历史记录。可以通过设置 maxLength
属性来更改此值。
KeyboardMouseIndicator(
alignment: Alignment.bottomLeft,
showAsHistory: true,
maxLength: 10, // 显示最近的 10 个事件
);
显示当前按下的键
默认情况下,该部件显示事件的历史记录。可以通过将 showAsHistory
属性设置为 false
来更改此行为。
它将显示当前按下的键。
KeyboardMouseIndicator(
alignment: Alignment.bottomLeft,
showAsHistory: false,
);
手动清除历史记录/按键
可以通过调用 KeyboardMouseController
的 clear
方法来手动清除历史记录/按键。
- 将
KeyboardMouseController
传递给KeyboardMouseIndicator
小部件。
final controller = KeyboardMouseController();
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
);
- 调用
KeyboardMouseController
的clear
方法来清除历史记录/按键。
controller.clear();
自定义鼠标指示器部件
可以通过传递 mouseIndicator
属性到 KeyboardMouseIndicator
小部件来定制鼠标指示器部件。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
mouseIndicator: MouseIndicator(
height: 72,
),
);
样式化鼠标指示器部件
可以通过传递 style
属性到 MouseIndicator
小部件来样式化鼠标指示器部件。MouseIndicatorStyle
有两种类型:MouseIndicatorStyle.filled
和 MouseIndicatorStyle.outlined
。默认情况下,它是 MouseIndicatorStyle.outlined
。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
mouseIndicator: MouseIndicator(
height: 72,
style: MouseIndicatorStyle.outlined(
borderColor: Colors.white,
indicatorColor: Colors.white,
backgroundColor: Colors.transparent,
borderWidth: 4,
showScrollButton: true,
scrollButtonWidth: 48,
buttonsHeightFactor: 0.5,
borderRadius: BorderRadius.circular(8),
),
),
);
属性 | 描述 |
---|---|
borderColor |
鼠标指示器边框的颜色。默认为 ColorScheme.onSurface 。 |
indicatorColor |
鼠标指示器指示器的颜色。默认为 borderColor 。 |
backgroundColor |
鼠标指示器背景颜色。 |
borderWidth |
鼠标指示器边框的宽度。 |
showScrollButton |
一个布尔值,表示是否显示滚动按钮。 |
scrollButtonWidth |
滚动按钮的宽度。用于调整滚动按钮的宽度。可以使用 scrollButtonWidthFactor 替换,以百分比形式提供宽度。 |
buttonsHeightFactor |
鼠标按钮的高度百分比。用于调整鼠标按钮的高度。 |
scrollButtonWidthFactor |
滚动按钮的宽度百分比。滚动按钮宽度可以以单个按钮的可用宽度百分比形式提供,就好像所有三个按钮都具有相同的宽度一样。可以替代 scrollButtonWidth 使用。 |
border |
允许提供自定义边框。任何 OutlinedBorder 都可以在这里使用。如果提供了此属性,则 borderColor 、borderWidth 和 borderRadius 必须不提供。 |
有关更多详细信息,请参阅 MouseIndicatorStyle
的文档。
同样,你可以使用 MouseIndicatorStyle.filled
来样式化鼠标指示器部件。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
mouseIndicator: MouseIndicator(
height: 72,
style: MouseIndicatorStyle.filled(
indicatorColor: Colors.white,
backgroundColor: Colors.transparent,
showScrollButton: true,
scrollButtonWidth: 48,
buttonsHeightFactor: 0.5,
spacing: 12,
),
),
);
属性 | 描述 |
---|---|
indicatorColor |
鼠标指示器指示器的颜色。默认为 ColorScheme.onSurface 。 |
backgroundColor |
鼠标指示器背景颜色。 |
showScrollButton |
一个布尔值,表示是否显示滚动按钮。 |
scrollButtonWidth |
滚动按钮的宽度。用于调整滚动按钮的宽度。可以使用 scrollButtonWidthFactor 替换,以百分比形式提供宽度。 |
buttonsHeightFactor |
鼠标按钮的高度百分比。用于调整鼠标按钮的高度。 |
scrollButtonWidthFactor |
滚动按钮的宽度百分比。滚动按钮宽度可以以单个按钮的可用宽度百分比形式提供,就好像所有三个按钮都具有相同的宽度一样。可以替代 scrollButtonWidth 使用。 |
spacing |
鼠标按钮之间的间距。 |
自定义历史记录项的 UI
可以通过传递 itemBuilder
属性到 KeyboardMouseIndicator
小部件来定制历史记录项的 UI。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
itemBuilder: (int index, KeyIndicatorEvent item) {
// 返回您的自定义小部件
},
);
KeyIndicatorEvent
描述了事件。它有以下属性:
属性 | 描述 |
---|---|
mouseButton |
按下的鼠标按钮。 |
keyboardKey |
按下的键盘键。不包括修饰键。 |
modifierKey |
按下的修饰键列表。包括 CTRL、ALT、SHIFT、META、OPTION 等。 |
count |
按键/组合被按下的次数。 |
自定义键标签
可以通过传递 keyLabelBuilder
属性到 KeyboardMouseIndicator
小部件来定制键标签。
KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
showAsHistory: true,
keyLabelBuilder: (LogicalKeyboardKey key) => key.debugName,
);
贡献
欢迎您为这个项目做出贡献!
在贡献和提出更改之前,请查看 贡献指南。
支持
如果您喜欢这个包,请通过打星来表达您的喜爱。
或者您可以
许可证
Copyright © 2023 Birju Vachhani
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
示例代码
以下是完整的示例代码:
import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:flutter/material.dart';
import 'package:keyboard_mouse_indicator/keyboard_mouse_indicator.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return AdaptiveTheme(
light: ThemeData(
useMaterial3: true,
brightness: Brightness.light,
colorSchemeSeed: Colors.blue,
),
dark: ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorSchemeSeed: Colors.blue,
),
initial: AdaptiveThemeMode.dark,
builder: (theme, darkTheme) => MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: theme,
darkTheme: darkTheme,
home: const MyHomePage(),
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late final KeyboardIndicatorController controller = KeyboardIndicatorController();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Focus(
autofocus: true,
onKey: (node, event) {
return KeyEventResult.handled;
},
child: Stack(
children: [
Positioned(
left: 32,
bottom: 32,
child: KeyboardMouseIndicator(
controller: controller,
alignment: Alignment.bottomLeft,
maxLength: 10,
mouseIndicator: const MouseIndicator(height: 72),
),
),
Positioned(
top: 16,
right: 16,
child: FilledButton(
onPressed: () => controller.clear(),
child: const Text('Clear'),
),
),
],
),
), // 这个尾随逗号使自动格式化更美观
);
}
}
更多关于Flutter键盘鼠标指示器插件keyboard_mouse_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter键盘鼠标指示器插件keyboard_mouse_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用keyboard_mouse_indicator
插件的示例代码。这个插件主要用于在Flutter应用中显示键盘和鼠标的指示器。
步骤 1: 添加依赖
首先,你需要在pubspec.yaml
文件中添加keyboard_mouse_indicator
依赖。
dependencies:
flutter:
sdk: flutter
keyboard_mouse_indicator: ^latest_version # 请替换为最新版本号
步骤 2: 导入包
在你的Dart文件中导入该包。
import 'package:keyboard_mouse_indicator/keyboard_mouse_indicator.dart';
步骤 3: 使用插件
在你的MaterialApp
或CupertinoApp
中包裹KeyboardMouseIndicator
组件。以下是一个完整的示例:
import 'package:flutter/material.dart';
import 'package:keyboard_mouse_indicator/keyboard_mouse_indicator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return KeyboardMouseIndicator(
builder: (context, isKeyboardVisible, isMouseConnected) {
return Scaffold(
appBar: AppBar(
title: Text('Keyboard and Mouse Indicator Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Keyboard Visible: $isKeyboardVisible',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
'Mouse Connected: $isMouseConnected',
style: TextStyle(fontSize: 24),
),
],
),
),
);
},
);
}
}
解释
- 添加依赖:在
pubspec.yaml
中添加keyboard_mouse_indicator
依赖。 - 导入包:在Dart文件中导入
keyboard_mouse_indicator
包。 - 使用插件:
- 使用
KeyboardMouseIndicator
组件包裹你的主应用内容。 builder
参数接收一个函数,该函数返回你的UI组件,并接受两个布尔值参数:isKeyboardVisible
和isMouseConnected
,分别表示键盘是否可见和鼠标是否连接。
- 使用
运行应用
确保你已经安装了所有依赖,然后运行你的Flutter应用。你应该会看到一个简单的界面,显示键盘是否可见以及鼠标是否连接的信息。
flutter pub get
flutter run
这样,你就成功地在Flutter应用中集成了keyboard_mouse_indicator
插件,并能够根据键盘和鼠标的状态动态显示信息。