[flutter] 바코드 스캔 결과에 따른 다양한 처리 방법

바코드 스캔은 모바일 애플리케이션에서 많이 사용되는 기능 중 하나입니다. 바코드를 스캔하여 제품 정보를 조회하거나 인증 절차를 수행하는 등 다양한 용도로 활용됩니다. 이번 포스트에서는 Flutter를 사용하여 바코드 스캔 결과에 따라서 다양한 처리 방법에 대해 알아보겠습니다.

1. flutter_barcode_scanner 패키지 설치

먼저, 바코드 스캔 기능을 구현하기 위해 flutter_barcode_scanner 패키지를 설치해야 합니다. 명령 프롬프트에서 다음 명령어를 실행하여 패키지를 설치합니다.

flutter pub add flutter_barcode_scanner

설치가 완료되면 pubspec.yaml 파일에 패키지가 추가된 것을 확인할 수 있습니다. 이제 바코드 스캔 기능을 구현할 준비가 되었습니다.

2. 바코드 스캔기능 구현하기

import 'package:flutter/material.dart';
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';

class BarcodeScannerPage extends StatefulWidget {
  @override
  _BarcodeScannerPageState createState() => _BarcodeScannerPageState();
}

class _BarcodeScannerPageState extends State<BarcodeScannerPage> {
  String _barcodeResult = '';

  Future<void> _scanBarcode() async {
    String barcodeScanResult = await FlutterBarcodeScanner.scanBarcode(
      '#FF0000', // 스캔창 색상 설정
      '취소', // 취소 버튼 텍스트 설정
    );

    if (!mounted) return;

    setState(() {
      _barcodeResult = barcodeScanResult;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('바코드 스캔'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _scanBarcode,
              child: Text('바코드 스캔'),
            ),
            SizedBox(height: 16),
            Text('스캔 결과: $_barcodeResult')
          ],
        ),
      ),
    );
  }
}

위의 코드는 flutter_barcode_scanner 패키지를 사용하여 바코드 스캔 기능을 구현한 예제입니다.

BarcodeScannerPage 위젯은 StatefulWidget으로 구현되었으며, _barcodeResult 변수를 통해 스캔 결과를 저장합니다. ElevatedButton 위젯을 클릭하면 _scanBarcode 함수가 호출되어 바코드 스캔을 수행하고 스캔 결과를 _barcodeResult 변수에 저장합니다. 이후 결과를 화면에 표시합니다.

3. 스캔 결과에 따른 다양한 처리 방법

바코드 스캔 결과에 따라 다양한 처리 방법을 적용할 수 있습니다. 예를 들어, 스캔된 바코드를 서버로 전송하여 제품 정보를 조회하거나, 스캔된 바코드에 따라 특정 동작을 수행하는 등의 처리 방법이 있을 수 있습니다.

다음은 스캔 결과를 서버로 전송하는 기능을 추가한 예제 코드입니다.

import 'package:http/http.dart' as http;

// ...

Future<void> _scanBarcode() async {
  String barcodeScanResult = await FlutterBarcodeScanner.scanBarcode(
    '#FF0000',
    '취소',
  );

  if (!mounted) return;

  setState(() {
    _barcodeResult = barcodeScanResult;
    _sendScanResultToServer(barcodeScanResult); // 스캔 결과 서버로 전송
  });
}

Future<void> _sendScanResultToServer(String result) async {
  try {
    String url = 'http://example.com/api/scan';
    var response = await http.post(url, body: {'result': result});

    if (response.statusCode == 200) {
      print('스캔 결과 전송 성공');
    } else {
      print('스캔 결과 전송 실패');
    }
  } catch (e) {
    print('서버 연결 실패: $e');
  }
}

위의 예제 코드에서 _sendScanResultToServer 함수는 스캔 결과를 서버로 전송하는 기능을 구현한 부분입니다. http 패키지를 사용하여 POST 요청을 보내고, 응답 상태 코드를 확인하여 전송 성공 여부를 판단합니다. 단순히 결과를 출력하는 것이 아니라 필요에 따라 서버로 전송된 바코드를 활용하여 추가적인 작업을 수행할 수 있습니다.

마치며

이번 포스트에서는 Flutter로 바코드 스캔 기능을 구현하고, 스캔 결과에 따른 다양한 처리 방법에 대해 알아보았습니다. flutter_barcode_scanner 패키지를 사용하면 간편하게 바코드 스캔 기능을 구현할 수 있으며, 스캔 결과를 활용하여 다양한 작업을 수행할 수 있습니다. 애플리케이션 개발 시 바코드 스캔 기능을 활용해보세요!