From 11ab040f903f69c28b3542b817b869218205bf47 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 29 May 2024 11:16:54 +0300 Subject: [PATCH] biometric / faceId auth added. cont. --- android/app/src/main/AndroidManifest.xml | 1 + .../providers/settings/setting_provider.dart | 3 ++ lib/new_views/pages/settings_page.dart | 45 +++++++++++++++++++ pubspec.yaml | 1 + 4 files changed, 50 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index beb02060..c1ce832f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ + diff --git a/lib/controllers/providers/settings/setting_provider.dart b/lib/controllers/providers/settings/setting_provider.dart index 17a2a166..349da0b6 100644 --- a/lib/controllers/providers/settings/setting_provider.dart +++ b/lib/controllers/providers/settings/setting_provider.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:local_auth/local_auth.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; @@ -108,6 +109,8 @@ class SettingProvider extends ChangeNotifier { loadSharedPreferences(); } + LocalAuthentication auth = LocalAuthentication(); + // get app setting Future loadSharedPreferences() async { SharedPreferences prefs = await SharedPreferences.getInstance(); diff --git a/lib/new_views/pages/settings_page.dart b/lib/new_views/pages/settings_page.dart index 8c69498d..e9cf4c7a 100644 --- a/lib/new_views/pages/settings_page.dart +++ b/lib/new_views/pages/settings_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_advanced_switch/flutter_advanced_switch.dart'; +import 'package:local_auth/local_auth.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -44,6 +45,18 @@ class _SettingsPageState extends State { await _settingProvider.setDarkTheme(_settingProvider.theme == "light"); themeController.value = _settingProvider.theme == "light"; }); + // + // _settingProvider.auth.getAvailableBiometrics().then((value) { + // value.forEach((element) => print(element.name)); + // print("face:${value.contains(BiometricType.face)}"); + // print("bio:${value.contains(BiometricType.fingerprint)}"); + // print("iris:${value.contains(BiometricType.iris)}"); + // print("weak:${value.contains(BiometricType.weak)}"); + // print("strong:${value.contains(BiometricType.strong)}"); + // + // _settingProvider.auth.canCheckBiometrics.then((value) => print(value)); + // }); + return Scaffold( appBar: DefaultAppBar(title: context.translation.settings), body: Column( @@ -87,6 +100,38 @@ class _SettingsPageState extends State { ), ], ), + // 16.height, + // const Divider().defaultStyle(context), + // 16.height, + // FutureBuilder( + // future: _settingProvider.auth.isDeviceSupported(), + // builder: (cxt, snapshot) { + // bool isDeviceSupported = false; + // if (snapshot.hasData) { + // isDeviceSupported = snapshot.data; + // } + // + // if (!isDeviceSupported) { + // return Text("Your device did not support Fingerprint/Face ID.", style: AppTextStyles.tinyFont.copyWith(fontSize: 11, color: Colors.red)); + // } + // + // return Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // context.translation.lightTheme.heading5(context), + // AdvancedSwitch( + // controller: themeController, + // activeColor: AppColor.green50.withOpacity(0.5), + // inactiveColor: AppColor.neutral10, + // thumb: CircleAvatar(backgroundColor: _settingProvider.theme == "light" ? AppColor.green50 : AppColor.neutral20), + // borderRadius: const BorderRadius.all(Radius.circular(30)), + // width: 42.toScreenWidth, + // height: 24.toScreenHeight, + // disabledOpacity: 1, + // ), + // ], + // ); + // }), ], ).toShadowContainer(context).paddingAll(16), ); diff --git a/pubspec.yaml b/pubspec.yaml index 737c1302..77b0c789 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -77,6 +77,7 @@ dependencies: touchable: ^0.2.1 flutter_month_picker: ^0.0.2 syncfusion_flutter_charts: ^21.2.3 + local_auth: ^2.1.6 dev_dependencies: flutter_test: