startBarcodeScanner static method

Implementation

static Future<ResultWrapper<BarcodeScannerUiResult>> startBarcodeScanner(
    MethodChannel channel, BarcodeScannerScreenConfiguration config) async {
  try {
    var updatedParameters = config.toJson();

    if (isUsecaseSupportBarcodeFormatter(config)) {
      var formatter = getBarcodeFormatter(config.useCase);
      if (formatter != null) {
        _initBarcodeFormatterHandler(
            _barcodeFormatterCallbackChannel, formatter);

        _barcodeFormatterCallbackChannel.setMethodCallHandler(_handler);
        updatedParameters['shouldUseBarcodeFormatter'] = true;
      }
    }

    var barcodeScanningResult =
        await channel.invokeMethod('startBarcodeScanner', updatedParameters);

    _handler = null;
    return ResultWrapper.fromJson(jsonDecode(barcodeScanningResult),
        fromJsonT: BarcodeScannerUiResult.fromJson);
  } catch (e) {
    Logger.root.severe(e);
    return ResultWrapper.error(e.toString());
  }
}