first step form auth by fingerprint

merge-requests/1/merge
Elham Rababah 6 years ago
parent 70db511ca5
commit 52fe4057bb

@ -4,9 +4,10 @@ import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterActivity() { class MainActivity: FlutterFragmentActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine); GeneratedPluginRegistrant.registerWith(flutterEngine);
} }
} }

@ -4,4 +4,6 @@
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
</manifest> </manifest>

@ -1,10 +1,13 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:ffi';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:local_auth/local_auth.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
DrAppSharedPreferances SharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances SharedPref = new DrAppSharedPreferances();
@ -16,13 +19,16 @@ class KnownUserLogin extends StatefulWidget {
class _KnownUserLoginState extends State<KnownUserLogin> { class _KnownUserLoginState extends State<KnownUserLogin> {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance(); Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
final LocalAuthentication auth = LocalAuthentication();
String _authorized = "not Authorized";
bool _isAuthenticating = false;
Future<String> loggedUserFuture; Future<String> loggedUserFuture;
var loggedUser; var loggedUser;
Future<void> getSharedPref() async { Future<void> getSharedPref() async {
SharedPref.getObj('loggedUser').then((userInfo) { SharedPref.getObj('loggedUser').then((userInfo) {
// if(loggedUser == null){} // if(loggedUser == null){}
loggedUser = userInfo; loggedUser = userInfo;
print('dddddddddddddddd${loggedUser}'); // print('dddddddddddddddd${loggedUser}');
}); });
} }
@ -41,7 +47,6 @@ class _KnownUserLoginState extends State<KnownUserLogin> {
return FutureBuilder( return FutureBuilder(
future: loggedUserFuture, future: loggedUserFuture,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) { builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
print('SnapShot ${snapshot}');
switch (snapshot.connectionState) { switch (snapshot.connectionState) {
case ConnectionState.waiting: case ConnectionState.waiting:
return DrAppCircularProgressIndeicator(); return DrAppCircularProgressIndeicator();
@ -151,16 +156,14 @@ class _KnownUserLoginState extends State<KnownUserLogin> {
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
RaisedButton( RaisedButton(
onPressed: () { onPressed:_authenticate,
silentLogin();
},
elevation: 0.0, elevation: 0.0,
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: 50, height: 50,
child: Center( child: Center(
child: Text( child: Text(
"Verify using FingerPRint".toUpperCase(), "Verify using FingerPRint ${_authorized}".toUpperCase(),
// textAlign: TextAlign.center, // textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
@ -207,7 +210,50 @@ class _KnownUserLoginState extends State<KnownUserLogin> {
Navigator.of(context).pushNamed('routeName'); Navigator.of(context).pushNamed('routeName');
} }
silentLogin(){ silentLogin() {
_authenticate();
}
Future<void> _authenticate() async {
_getAvailableBiometrics();
bool authenticated = false;
try {
setState(() {
_isAuthenticating = true;
_authorized = 'Authenticating';
});
authenticated = await auth.authenticateWithBiometrics(
localizedReason: 'Scan your fingerprint to authenticate',
useErrorDialogs: true,
stickyAuth: true);
setState(() {
_isAuthenticating = false;
_authorized = 'Authenticating';
});
} on PlatformException catch (e) {
print(e);
}
if (!mounted) return;
final String message = authenticated ? 'Authorized' : 'Not Authorized';
setState(() {
print('_authorized'+_authorized);
_authorized = message;
});
}
Future<void> _getAvailableBiometrics() async {
List<BiometricType> availableBiometrics;
try {
availableBiometrics = await auth.getAvailableBiometrics();
} on PlatformException catch (e) {
print(e);
}
if (!mounted) return;
setState(() {
print('availableBiometrics $availableBiometrics');
});
} }
} }

@ -209,6 +209,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.4" version: "0.1.4"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.6"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -317,6 +324,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
local_auth:
dependency: "direct main"
description:
name: local_auth
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.1+3"
logging: logging:
dependency: transitive dependency: transitive
description: description:
@ -394,6 +408,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.4.0" version: "2.4.0"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
pool: pool:
dependency: transitive dependency: transitive
description: description:

@ -28,6 +28,7 @@ dependencies:
shared_preferences: ^0.5.6+3 shared_preferences: ^0.5.6+3
imei_plugin: ^1.1.6 imei_plugin: ^1.1.6
flutter_flexible_toast: ^0.1.4 flutter_flexible_toast: ^0.1.4
local_auth: ^0.6.1+3

Loading…
Cancel
Save