Событие прослушивающее входную строку во Flutter

Есть телефон, к которому подключен сканер штрих-кодов. Необходимо что бы при считывании штрих-кода сканером он записывался в нужное поле на экране. Это работает если поле было изначально активировано тапом по нему. Но необходимо что бы просканированный штрих-код вписывался в это поле даже если оно не было активировано пользователем. То есть необходимо создать какое то событие, которое ожидает что поступит какой то текст и впишет данный текст в поле автоматический. Подскажите, как такое возможно реализовать? Или возможно уже есть готовые плагины?

UPDATE 1: Необходимо что бы при сканировании в поле barcode записывалась строка, даже если данное поле не было активировано (не было выбрано в фокус)

class DocumentsScreen extends StatefulWidget {
  final DocumentsModel documentInfo;

  const DocumentsScreen({Key key, this.documentInfo})
      : super(key: key);

  @override
  _DocumentsScreen createState() =>
      _DocumentsScreen(documentInfo);
}

class _DocumentsScreen extends State<DocumentsScreen> {
  final DocumentsModel documentInfo;

  _DocumentsScreen(this.documentInfo);

  TextEditingController barcode = new TextEditingController();
  FocusNode barcodeFocus = new FocusNode();

  DocumentInfoModel arrivalDocumentInfo =
      new DocumentInfoModel(documentItems: new List<DocumentItems>());
  int _sortIndex;
  bool _sortAscending = false;

  @override
  void initState() {
    onRefresh();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new TextLeft(
            '${documentInfo.documentName}', TextStyleBase.whiteSize15),
      ),
      body: new RefreshIndicator(
          child: new Column(
            children: <Widget>[
              new Row(
                children: <Widget>[
                  new Expanded(
                    child: new TextField(
                      controller: barcode,
                      focusNode: barcodeFocus,
                      decoration: new InputDecoration(
                          hintText: 'Просканируйте штрих-код'),
                      onEditingComplete: () {
                        if (barcode.text != '') {
                          // Some code...
                        }
                      },
                    ),
                  ),
                  new VoidIconButton(Icons.clear, Colors.red, () {
                    barcode.clear();
                  }),
                ],
              ),
              new Expanded(
                child: new ListView(
                  children: <Widget>[
                    // Some code...
                  ],
                ),
              ),
              // Some code...
            ],
          ),
          onRefresh: onRefresh),
    );
  }

  Future onRefresh() async {
    documentService
        .documentItemsByDocumentId(documentInfo.documentId)
        .then((document) {
      setState(() {
        arrivalDocumentInfo = document;
        barcode.clear();
        barcodeFocus.requestFocus();
      });
    });
  }

  // Some code...
}

Ответы (1 шт):

Автор решения: Leksor

Спасибо @AndreySmelik за ответ в комментариях.

RawKeyboardListener позволяет сделать это https://docs.flutter.io/flutter/widgets/RawKeyboardListener-class.html

  var _focusNode = FocusNode();

  @override
  Widget build(BuildContext context) {
    
    return RawKeyboardListener(
        child: Text('raw keyboard input'),
        focusNode: _focusNode,
        onKey: _onRawKeyEvent,
      );
  }

  void _onRawKeyEvent(RawKeyEvent event) {
    ..
  }
→ Ссылка