各位先進好,我的需求是要實作一個輸入框,在不跳出鍵盤的情況下讓人透過工業手機本身的條碼槍掃QR Code來取得內容,原始碼附在下方。
目前作法是搭配KeyboardListener與TextField的keyboardType: TextInputType.none,雖然能夠實作出上述的效果,但僅能刷出英數字...如果QR Code內包含中文字時就會造成功能失效(刷不出),KeyEvent也沒有接到中文字..
由於小妹原來是寫C#,平常是開發網頁與應用程式,對於手機完全不熟悉,臨時被指派APP開發..目前都是參考Flutter官方文件跟網路上的一些資訊來理解&開發,目前在這個功能上已經卡了好多天..一直找不到解決方案,因此發文請教是否有業界的先進可以提供我一些方向或解決辦法? 謝謝大家!!
工業手機是 Andriod 7.1.2 版本
import 'package:flutter/material.dart';
class Test extends StatefulWidget {
const Test({Key? key, required this.title}) : super(key: key);
static const routeName = '/test';
final String title;
@override
State<Test> createState() => _Test();
}
class _Test extends State<Test> {
final _control = TextEditingController();
final FocusNode _focusKeyboard = FocusNode();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(
padding: const EdgeInsets.only(top: 20.0, left: 10.0, right: 10.0),
child: Column(
children: <Widget>[
KeyboardListener(
onKeyEvent: (KeyEvent e){
debugPrint(e.toString());
},
focusNode: _focusKeyboard,
child: TextField(controller: _control, keyboardType: TextInputType.none,
onChanged: (val){
debugPrint("onChanged: $val");
},
onEditingComplete: (){
debugPrint("onEditingComplete");
},
onSubmitted: (val) {
debugPrint("onSubmitted: $val");
},
),
)
],
)));
}
}
將可掃中文QRCODE的 app (例如:這個)裝在工業手機上,掃掃看,如果:
1.可以掃出中文,可能是你flutter程式問題
2.不能掃出中文,可能是工業手機問題(不支援中文)
另外請教一下
app 使用的是那一個 package
我是用這個這種工業手機:
https://www.ute.com/tw/products/detail/EA520
他的裝置上方有配備掃描槍,使用方式是按下左右的藍色按鈕,就可以掃描了,我目前用工業手機內andriod的其他輸入框,例如備註、Google搜尋框,均可以正常刷入中文,只有我用Flutter開發的輸入框不行..
我目前認為是Flutter的關係,但我希望是因為我不會寫..因為我其他功能都寫好了..剩下這個問題 T_T
也許你也可以試試 RawKeyboardListener 看會不會有更多訊息