본문 바로가기

Flutter

[j Flutter] local_auth을 사용하여 지문 인식하기

728x90
반응형

1. 지문인식에 필요한 플러그인을 설치해준다.

https://pub.dev/packages/local_auth/install

 

local_auth | Flutter Package

Flutter plugin for Android and iOS devices to allow local authentication via fingerprint, touch ID, face ID, passcode, pin, or pattern.

pub.dev

 

2. 지문인식을 사용 할 dart파일에 추가해준다.

import 'package:local_auth/local_auth.dart';

 

3. 생체인식을 할 수 있는 폰인지 확인

var _isLocalAuth;

 @override
  initState() {
    super.initState();
    check();
  }

  check() async {
    var isLocalAuth;
    isLocalAuth = await LocalAuthentication().canCheckBiometrics;
    setState(() {
      _isLocalAuth = isLocalAuth;
    });
  }

 

 

4. 지문인식 구현

var _authorized = '';


GestureDetector(
                      onTap: () async {
                        bool authenticated = false;
                        authenticated = await LocalAuthentication()
                            .authenticate(
                                androidAuthStrings: AndroidAuthMessages(
                                    biometricSuccess: "성공",
                                    biometricHint: "",
                                    cancelButton: "지문인식 취소",
                                    signInTitle: "지문인식",
                                    biometricRequiredTitle: "지문인식을 해주세요"),
                                localizedReason: '지문을 인식해주세요!');
                        setState(() {
                          _authorized =
                              authenticated ? 'Authorized' : 'Not Authorized';
                        });
                      },
                      child: Icon(
                        Icons.fingerprint,
                        color: AppColors.pink2,
                        size: 120,
                      ))

해당 아이콘을 누르면 지문인식 다이얼로그가 뜨고 지문인식을 하게되면 다음으로 넘어간다.

 

*AndroidAuthMessages 부분을 이용하면 다이얼로그 안 텍스트를 변경 할 수 있다.

 

 

5. android 설정

* Build.gradle project수준

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

- gradle 버전을 3.5.2로 낮춰준다.

 

 

* MainActivity.kt 

 

import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine( flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }
}

- FlutterFragmentAcitivty()로 변경

 

 

* styles.xml에 theme추가

<style name="LaunchTheme1" parent="Theme.AppCompat.Light.NoActionBar"/>

 

* AndroidManifest.xml

- Mainactivity 부분에 theme 변경

android:theme="@style/LaunchTheme1"

- permission 추가

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
728x90
반응형