[flutter] 플러터에서의 지문 인식 처리 방법

플러터(Flutter)는 Google에서 개발한 크로스 플랫폼 모바일 애플리케이션 개발 프레임워크로, iOS와 Android 모두에서 동일한 코드를 사용하여 앱을 개발할 수 있습니다. 이번 글에서는 플러터에서의 지문 인식 처리 방법에 대해 알아보겠습니다.

지문 인식 패키지 추가

플러터에서 지문 인식 기능을 사용하기 위해서는 다음과 같이 local_auth 패키지를 pubspec.yaml 파일에 추가해야 합니다.

dependencies:
  local_auth: ^1.1.6

지문 인식 구현

클래스에 local_auth 패키지를 임포트한 후, 다음과 같이 지문 인식 기능을 구현할 수 있습니다.

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

class FingerprintScreen extends StatefulWidget {
  @override
  _FingerprintScreenState createState() => _FingerprintScreenState();
}

class _FingerprintScreenState extends State<FingerprintScreen> {
  final LocalAuthentication _localAuth = LocalAuthentication();
  bool _isFingerprintAvailable = false;
  String _authorizedMessage = '';

  @override
  void initState() {
    super.initState();
    checkFingerprintAvailability();
  }

  Future<void> checkFingerprintAvailability() async {
    bool isAvailable = await _localAuth.canCheckBiometrics;
    setState(() {
      _isFingerprintAvailable = isAvailable;
    });
  }

  Future<void> authenticateFingerprint() async {
    bool isAuthenticated = false;
    try {
      isAuthenticated = await _localAuth.authenticateWithBiometrics(
        localizedReason: 'Please authenticate with your fingerprint',
        useErrorDialogs: true,
        stickyAuth: true,
      );
    } catch (e) {
      isAuthenticated = false;
      print(e.toString());
    }

    if (isAuthenticated) {
      setState(() {
        _authorizedMessage = 'Fingerprint authenticated successfully';
      });
    } else {
      setState(() {
        _authorizedMessage = 'Fingerprint authentication failed';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fingerprint Authentication'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_isFingerprintAvailable)
              RaisedButton(
                child: Text('Authenticate with fingerprint'),
                onPressed: authenticateFingerprint,
              ),
            Text(_authorizedMessage),
          ],
        ),
      ),
    );
  }
}

지문 인식 화면 호출

지문 인식을 사용하려는 화면에서 위에서 구현한 FingerprintScreen 클래스를 호출하면 됩니다. 예를 들어, 메인 화면의 버튼을 클릭하여 지문 인식 화면으로 이동하는 예제 코드는 다음과 같습니다.

import 'package:flutter/material.dart';
import 'package:example_app/screens/fingerprint_screen.dart';

void main() {
  runApp(MyApp());
}

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Fingerprint Demo'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Go to Fingerprint Screen'),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => FingerprintScreen(),
              ),
            );
          },
        ),
      ),
    );
  }
}

위의 코드에서 FingerprintScreen 클래스를 호출하기 위해 MaterialPageRoute를 사용하여 새로운 경로로 이동하도록 하였습니다.

결론

플러터에서의 지문 인식 처리 방법에 대해 알아보았습니다. local_auth 패키지를 사용하여 간단하게 지문 인식 기능을 구현할 수 있습니다. 이를 통해 사용자 인증의 보안성을 높일 수 있고, 사용자들에게 편리한 로그인 경험을 제공할 수 있습니다.

참고 자료