

import 'package:visibility_detector/visibility_detector.dart'; import 'package:flutter_barcode_listener/flutter_barcode_listener.dart';
usb keyboard mode사용
VisibilityDetector 와 BarcodeKeyboardListener 를 사용해 바코드가 찍혔을때 입력되는 String을 캐치합니다
Scaffold(
appBar: AppBar(
title: const Text('Flutter Serial Port example'),
),
body: VisibilityDetector(
onVisibilityChanged: (VisibilityInfo info) {
visible = info.visibleFraction > 0;
},
key: Key('visible-detector-key'),
child: BarcodeKeyboardListener(
bufferDuration: Duration(milliseconds: 200),
onBarcodeScanned: (barcode) {
if (!visible) return;
print(barcode);
setState(() {
_barcode = barcode;
});
showDialog(context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('바코드 성공!'),
content: Text('바코드는 $barcode'),
actions: [
ElevatedButton(onPressed: (){
Navigator.pop(context);
},
child: Text('ok'),
),
],
);
}
);
},
child: Scrollbar(
child: ListView(
children: [
for (var address in ports)
Builder(builder: (context) {
final port = SerialPort(address);
return ExpansionTile(
title: Text(address),
children: [
InkWell(
onTap: (){
if(port.portName == "COM5"){
Printer().bootPrinter(port);
showDialog(context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('ok 성공!'),
content: Text('축하 축하'),
actions: [
ElevatedButton(
onPressed: (){
Printer().feed_20(port);
},
child: Text('print'),
),
//
// ElevatedButton(
// onPressed: (){
// Printer().checkStatus(port);
// },
// child: Text('check')),
ElevatedButton(onPressed: (){
Navigator.pop(context);
},
child: Text('ok'),
),
],
);
}
);
} else {
showDialog(context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('ok 성공!'),
content: Column(
children: [
ElevatedButton(
onPressed: (){
Barcode().boot(port);
},
child: Text('boot'),
),
ElevatedButton(
onPressed: (){
Barcode().reset(port);
},
child: Text('reset'),
),
ElevatedButton(
onPressed: (){
Barcode().init(port);
},
child: Text('init'),
),
ElevatedButton(
onPressed: (){
Barcode().version(port);
},
child: Text('version'),
),
ElevatedButton(
onPressed: (){
Barcode().status(port);
},
child: Text('status'),
),
ElevatedButton(
onPressed: (){
Barcode().on(port);
},
child: Text('on'),
),
ElevatedButton(
onPressed: (){
Barcode().on(port);
},
child: Text('off'),
),
],
),
actions: [
ElevatedButton(onPressed: (){
// Barcode().off(port);
Navigator.pop(context);
},
child: Text('ok'),
),
],
);
}
);
}
},
child: CardListTile('Description is open', port.isOpened.toString())),
],
);
}),
],
),
),
),
),
// floatingActionButton: FloatingActionButton(
// child: Icon(Icons.refresh),
// onPressed: initPorts,
// ),
),