[flutter] 스캔된 바코드 정보를 서버에 전송하는 방법

바코드 스캐너 기능을 포함한 Flutter 앱을 개발하고 있고, 스캔된 바코드 정보를 서버에 전송하려고 합니다. 이번 블로그 포스트에서는 Flutter 앱에서 바코드를 스캔하고, 해당 정보를 서버에 전송하는 방법을 알아보겠습니다.

바코드 스캐너 라이브러리 설치

먼저, 바코드 스캐너 기능을 구현하기 위해 barcode_scan 라이브러리를 설치해야 합니다. 이 라이브러리는 Flutter 앱에서 바코드 스캐너를 쉽게 구현할 수 있도록 도와줍니다. pubspec.yaml 파일에 다음과 같이 의존성을 추가합니다:

dependencies:
  barcode_scan: ^2.0.0

의존성을 추가한 후에는 flutter pub get 명령을 실행하여 라이브러리를 다운로드 받습니다.

바코드 스캔 기능 추가

barcode_scan 라이브러리를 사용하여 바코드 스캐너 기능을 추가할 수 있습니다. 다음은 스캔 버튼을 누를 때 바코드를 스캔하고, 스캔된 정보를 출력하는 코드 예시입니다:

import 'package:barcode_scan/barcode_scan.dart';

void _scanBarcode() async {
  var result = await BarcodeScanner.scan();
  print(result.rawContent); // 스캔된 바코드 정보 출력
}

위의 코드는 스캔 버튼이 클릭되었을 때 _scanBarcode 함수를 호출하며, 바코드 스캐너를 실행합니다. 스캔이 완료되면 result 변수에 스캔 결과가 저장되고, result.rawContent를 통해 스캔된 바코드 정보를 얻을 수 있습니다.

서버에 바코드 정보 전송

스캔된 바코드 정보를 서버에 전송하기 위해서는 http 라이브러리를 사용하여 HTTP 요청을 보내야 합니다. 다음은 스캔된 바코드 정보를 서버에 POST 요청하는 코드 예시입니다:

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

void _sendBarcodeToServer(String barcode) {
  var url = 'http://example.com/barcode';
  var body = {
    'barcode': barcode,
  };
  http.post(url, body: body).then((response) {
    if (response.statusCode == 200) {
      print('Barcode sent successfully');
    } else {
      print('Failed to send barcode');
    }
  });
}

위의 코드에서 url 변수는 서버의 엔드포인트 URL을 나타냅니다. 바코드 정보는 body 맵에 저장되며, http.post 함수를 사용하여 POST 요청을 보냅니다. 요청이 성공하면 response.statusCode가 200이 되고, 실패하면 다른 상태 코드가 반환됩니다.

전체 코드 예시

import 'package:flutter/material.dart';
import 'package:barcode_scan/barcode_scan.dart';
import 'package:http/http.dart' as http;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Barcode Scanner',
      home: BarcodeScannerScreen(),
    );
  }
}

class BarcodeScannerScreen extends StatelessWidget {
  void _scanBarcode() async {
    var result = await BarcodeScanner.scan();
    print(result.rawContent);
    _sendBarcodeToServer(result.rawContent);
  }

  void _sendBarcodeToServer(String barcode) {
    var url = 'http://example.com/barcode';
    var body = {
      'barcode': barcode,
    };
    http.post(url, body: body).then((response) {
      if (response.statusCode == 200) {
        print('Barcode sent successfully');
      } else {
        print('Failed to send barcode');
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Barcode Scanner'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Scan Barcode'),
          onPressed: _scanBarcode,
        ),
      ),
    );
  }
}

위의 코드는 전체 앱을 구현한 예시입니다. BarcodeScannerScreen 위젯에서는 스캔 버튼을 누르면 바코드를 스캔하고, 해당 정보를 서버에 전송합니다.

이제 Flutter 앱에서 바코드를 스캔하고 서버에 전송하는 방법을 알게 되었습니다. 이를 기반으로 바코드 스캐너 기능을 구현하여, 원하는 서비스에 바코드 정보를 활용할 수 있습니다.

참고 자료