스크린샷 2022-06-24 오전 9.27.20.png

스크린샷 2022-06-24 오전 9.27.27.png

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,
        // ),
      ),