Ada kalanya kita perlu mengimplementasikan autentikasi berupa sidik jari (fingerprint) dalam aplikasi yang kita kembangkan. Dalam flutter implementasi sidik jari dapat dengan mudah digunakan. Tersedia plugin yang di maintain langsung oleh tim Flutter sendiri. Plugin yang kita gunakan adalah local_auth.

Untuk mulai mengimplementasikan :

  • Tambah plugin local_auth dalam pubspec.yaml

dependencies:
local_auth: “^0.0.1”

  • Lalu pada flutter, membuat file yang akan menampilkan scan fingerprint berupa popup :
import 'package:local_auth/local_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class AuthorizePage extends StatefulWidget {
  @override
  _AuthorizePageState createState() =>_AuthorizePageState();
}

class _AuthorizePageState extends State<AuthorizePage> {
  final LocalAuthentication localAuth = LocalAuthentication();
  bool _canCheckBiometric = false;
  String _authorizeText = 'Not Authorized!';

  List availableBiometrics = List();

  Future _authorize() async {
    bool _isAuthorized = false;
    try {
      _isAuthorized = await localAuth.authenticateWithBiometrics(
        localizedReason: 'Please authenticate to Complete this process',
        useErrorDialogs: true,
        stickyAuth: true,
      );
    } on PlatformException catch (e) {
      print(e);
    }

    if (!mounted) return;

    setState(() {
      if (_isAuthorized) {
        _authorizeText = "Authorized Successfully!";
      } else {
        _authorizeText = "Not Authorized!";
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Touch ID Auth Example')),
      body: Center(
          child: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(_authorizeText),
          ),
          RaisedButton(
            child: Text('Authorize'),
            color: Colors.red,
            onPressed: _authorize,
          )
        ],
      )),
    );
  }
}

Integrasi Android

Untuk dapat berjalan di android, kita perlu mengubah/menambah beberapa :

Tambahkan permission untuk mengakses fingerprint pada AndroidManifest.xml

<uses-permission android:name=android.permission.USE_FINGERPRINT/>

Selanjutnya ubah file MainActivity.java atau MainActivity.kt yang berada di struktur project android dengan mengubah implementasinya dari FlutterActivity ke FlutterFragmentActivity, seperti :

import android.os.Bundle;
import io.flutter.app.FlutterFragmentActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterFragmentActivity {
 Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   GeneratedPluginRegistrant.registerWith(this);
}

Integrasi di iOS

Sementara untuk di ios diperlukan permission juga ke dalam file info.plist berupa :

NSFaceIDUsageDescription
Why is my app authenticating using face id?

maka akan menampilkan seperti ini :

Tagged : #

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *