изменение экземпляра «Штрих-кода» на строку

#flutter #dart

Вопрос:

Поэтому я создаю qr-сканер, и мне удается закончить его и выдать мне результат, но когда я печатаю результат, он дает мне

 'Instance of 'Barcode'
 

Отзывы

Вот мой код

  Future _openScanner(BuildContext context) async {
        final result = await Navigator.push(context, MaterialPageRoute(builder: (c) => Scanner()));
        _result = result.toString();
      }
 

Как я показываю в своем приложении

 Text(
           _result != null ? _result : 'Hi, Raisa',
              style: TextStyle(
              color: Color(
              0xFFE1C884),
             // fontFamily: 'Saveur',
             fontWeight: FontWeight
               .bold,
           fontSize: 20.sp
          ),
 )
 

Мой QR-код для просмотра

 QRView(
              key: _qrKey,
              overlay: QrScannerOverlayShape(borderColor: Colors.white),
              onQRViewCreated: (QRViewController controller) {
                this._controller = controller;
                controller.scannedDataStream.listen((val) {
                  // print(val.toString());
                  if (mounted) {
                    _controller.dispose();
                    Navigator.pop(context,val);
                  }
                });
              }),
 

Комментарии:

1. Метод toString() вернет имя объекта, которое 'Instance of 'Barcode'

2. @Mayank, но если я не добавлю, что это будет ошибка

Ответ №1:

Согласно документации, вы должны использовать val.code для получения строкового значения штрих — кода.

 onQRViewCreated: (QRViewController controller) {
  this._controller = controller;
  controller.scannedDataStream.listen((val) {
    if (mounted) {
      _controller.dispose();
      Navigator.pop(context, val.code);
    }
  });
}),
 

В будущем, если у вас возникнут проблемы с пакетом, убедитесь, что вы указали, что и где находится пакет. Таким образом, потенциальным ответчикам не придется искать его и гадать, какой пакет вы используете. Таким образом, вы быстрее получите больше и лучшие ответы.

Ответ №2:

Вы должны сделать что-то вроде этого:

  Future _openScanner(BuildContext context) async {
        final result = await Navigator.push(context, MaterialPageRoute(builder: (c) => Scanner()));
        _result = result.getValue;
      }
 
 class Barcode{
String? value;
...
String get getValue{
    return value;
  }
...
}

 
 QRView(
              key: _qrKey,
              overlay: QrScannerOverlayShape(borderColor: Colors.white),
              onQRViewCreated: (QRViewController controller) {
                this._controller = controller;
                controller.scannedDataStream.listen((val) {
                  // print(val.toString());
                  if (mounted) {
                    _controller.dispose();
                    value = val;
                    Navigator.pop(context);
                  }
                });
              }),

}
 

Комментарии:

1. ошибка в value = val; значении типа «Штрих-код» не может быть присвоена переменной типа «Строка». Попробуйте изменить тип переменной или присвоить правому типу значение «Строка».

2. @Карамель Из той информации, которую вы дали, это все, что я могу сказать. Вы должны это сделать value=val; , где val-строка, возвращаемая с вашего считывателя штрих-кодов,

Ответ №3:

Там есть какая-то ошибка

  1. добавьте это :

final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
Barcode resu<

  1. добавьте это в QRview
 QRView(
              key: _qrKey,
              overlay: QrScannerOverlayShape(borderColor: Colors.white),
              onQRViewCreated: (QRViewController controller) {
                this._controller = controller;
                controller.scannedDataStream.listen((val) {
                  // print(val.toString());
                  if (mounted) {
                    _controller.dispose();
                    value = val; //this
                    Navigator.pop(context);
                  }
                });
              }),
}
 
  1. когда вы собираетесь показать или распечатать

    a. если вы хотите распечатать тип штрих-кода, просто добавьте (.формат) b. если вы хотите распечатать код штрих-кода, просто добавьте (.код)