- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用2D蓝牙扫描仪扫描条形码的应用程序。该应用程序已投入生产,并且运行良好,现在有了Flutter的最新SDK更新,一旦打开软/虚拟键盘,我用来监听扫描仪输入的RawKeyboardLister
不再起作用。
在应用程序上有一些实例,用户需要键盘来输入字符,但是在他们输入字符之后,他们会转到进行更多扫描的屏幕上,侦听器仅注册RawKeyUpEvent
,而不再注册RawKeyDownEvent
。
这是我的代码:
class ScannerFragment extends StatefulWidget {
final Widget child;
final StreamController scanController;
ScannerFragment(
{Key key, @required this.child, @required this.scanController})
: super(key: key);
@override
_ScannerFragmentState createState() => _ScannerFragmentState();
}
class _ScannerFragmentState extends State<ScannerFragment> {
final FocusNode focusNode = new FocusNode();
final List<String> scannedCharacters = [];
@override
Widget build(BuildContext context) {
return Consumer<BaseProvider>(
builder: (BuildContext _, BaseProvider provider, Widget __) {
if (!provider.keyboardMustComeToView)
return _buildRawKeyboardListener();
return widget.child;
},
);
}
Widget _buildRawKeyboardListener() {
return RawKeyboardListener(
focusNode: focusNode,
onKey: _handleKey,
child: widget.child,
);
}
void _handleKey(RawKeyEvent key) {
var x = key.character;
var u = key.logicalKey;
var y = locator<BaseProvider>().keyboardMustComeToView;
print("${key.character}");
if (key.runtimeType.toString() == 'RawKeyDownEvent') {
RawKeyEventDataAndroid data = key.data as RawKeyEventDataAndroid;
//keycode of key event (66 is return)
if (data.keyCode == 66 || data.flags == 136) {
locator<DirectechProvider>().setProcessingScan = false;
print("terminate: ${scannedCharacters.join()}");
widget.scanController.add(scannedCharacters.join());
widget.scanController.done;
scannedCharacters.clear();
return;
}
if (key.character != null) {
if (!locator<DirectechProvider>().processingScan)
locator<DirectechProvider>().setProcessingScan = true;
scannedCharacters.add(key.character);
}
}
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
FocusScope.of(context).requestFocus(focusNode);
}
@override
void dispose() {
focusNode.dispose();
super.dispose();
}
这是我 flutter 的医生:
[✓] Flutter (Channel stable, 1.22.0, on Mac OS X 10.14.6 18G6020, locale en-ZA)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
[✓] Android Studio (version 4.0)
[!] VS Code (version 1.48.2)
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)
- 编辑 -
最佳答案
在什么版本的Flutter上它停止工作了?
现在,我建议回滚到该版本。这将使您能够持续进行生产开发,并且用户可以继续接收更新。
编写以下命令:
flutter downgrade "version_number"
flutter clean
但是,从长远来看,您能否发布用于接收来自蓝牙扫描器流的软件包名称?
flutter version 1.17.4
然后,当它要求您确认是否要降级时,请按
和。
flutter clean
关于android - Flutter RawKeyboardListener buggy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64384796/
我正在使用 RawKeyboardListener要在网络上捕获键盘事件,它在 Debug模式下工作正常,但是当我构建它进行发布时,它不会捕获键盘事件。我用一个基本的应用程序尝试过: import '
我有一个使用2D蓝牙扫描仪扫描条形码的应用程序。该应用程序已投入生产,并且运行良好,现在有了Flutter的最新SDK更新,一旦打开软/虚拟键盘,我用来监听扫描仪输入的RawKeyboardListe
我想要实现的是,当查看此小部件时,RawKeyboardListener 在 TextField 未被选中/处于焦点时立即开始监听。它运行 HandleKey 函数 来处理我想用 keyCode 做的
这是一些小部件中的简单代码。 RawKeyboardListener的 onKey没有触发!那么问题是为什么?这是一个错误吗? Container( child: StreamProvider.v
我正在尝试检测抖动中的“Enter”、“Delete”和“Backspace”等按键。我使用 的问题RawKeyboardListener 是它将焦点从任何子小部件上移开。 例如 RawKeyboar
我正在为 flutter web 编写一个“贪吃蛇”视频游戏。我想使用箭头键四处移动,但我一直无法使用 RawKeyboardListener 捕获按键。我相信这是因为我没有关注正确的节点。此时,我只
我是一名优秀的程序员,十分优秀!