[flutter] 플러터로 바코드 스캐너 앱 만들기

플러터(Flutter)는 구글에서 개발한 UI 소프트웨어 개발 킷으로, 하나의 코드베이스로 안드로이드와 iOS 앱을 모두 개발할 수 있는 크로스 플랫폼 프레임워크입니다. 이번에는 플러터를 사용하여 간단한 바코드 스캐너 앱을 만들어보겠습니다.

1. 필요한 패키지 설치

플러터로 바코드 스캐너 앱을 만들기 위해 다음과 같은 패키지를 설치해야 합니다:

dependencies:
  flutter:
    sdk: flutter
  barcode_scan: ^2.0.0

barcode_scan 패키지는 바코드 스캔 기능을 제공하는 패키지입니다. pubspec.yaml 파일의 dependencies 섹션에 위와 같이 추가해주세요. 그리고 패키지를 다운로드받기 위해 터미널에서 flutter packages get 명령어를 실행해주세요.

2. 바코드 스캐너 앱 구현

import 'package:flutter/material.dart';
import 'package:barcode_scan/barcode_scan.dart';
import 'package:flutter/services.dart';

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

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

class BarcodeScannerScreen extends StatefulWidget {
  @override
  _BarcodeScannerScreenState createState() => _BarcodeScannerScreenState();
}

class _BarcodeScannerScreenState extends State<BarcodeScannerScreen> {
  String _barcode = '';

  Future<void> _scanBarcode() async {
    try {
      final result = await BarcodeScanner.scan();
      setState(() {
        _barcode = result.rawContent;
      });
    } on PlatformException catch (e) {
      if (e.code == BarcodeScanner.cameraAccessDenied) {
        setState(() {
          _barcode = '카메라 접근 권한이 없습니다.';
        });
      } else {
        setState(() {
          _barcode = '바코드 스캔에 실패했습니다: $e';
        });
      }
    } on FormatException {
      setState(() {
        _barcode = '바코드 스캔을 취소하였습니다.';
      });
    } catch (e) {
      setState(() {
        _barcode = '알 수 없는 오류: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Barcode Scanner'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '바코드 결과:',
              style: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
              ),
            ),
            SizedBox(height: 10),
            Text(
              _barcode,
              style: TextStyle(
                fontSize: 16,
              ),
            ),
            SizedBox(height: 30),
            RaisedButton(
              onPressed: _scanBarcode,
              child: Text('바코드 스캔'),
            ),
          ],
        ),
      ),
    );
  }
}

위 코드는 플러터를 사용하여 바코드 스캐너 앱을 구현한 예제입니다. barcode_scan 패키지의 BarcodeScanner.scan() 메서드를 사용하여 바코드를 스캔할 수 있습니다. 스캔 결과는 _barcode 변수에 저장되며, UI에 표시됩니다.

3. 앱 실행 및 테스트

위의 코드를 실행하기 위해 터미널에서 flutter run 명령어를 실행하면 플러터 개발 서버가 실행됩니다. 개발 서버에 연결된 실제 디바이스나 에뮬레이터에서 바코드 스캐너 앱을 실행할 수 있습니다.

앱을 실행하고 “바코드 스캔” 버튼을 누르면 카메라가 열리고 바코드를 인식하게 됩니다. 인식된 바코드 번호는 화면에 표시됩니다.

결론

이번에는 플러터를 사용하여 바코드 스캐너 앱을 만드는 방법에 대해 알아보았습니다. 플러터의 간단한 UI 구성과 barcode_scan 패키지의 사용법을 익혀서 다양한 앱 개발에 응용할 수 있습니다.