如何在本地身份验证中单击取消以及当最大尝试次数超过颤振时关闭应用程序

Posted

技术标签:

【中文标题】如何在本地身份验证中单击取消以及当最大尝试次数超过颤振时关闭应用程序【英文标题】:how to close the application on clicking cancel in local auth and also when maximum tries exceeds in flutter 【发布时间】:2021-01-28 07:13:32 【问题描述】:

我是 Flutter 的新手。我想使用本地生物识别技术创建一个应用程序,我使用了本地身份验证,我需要帮助

    点击local_auth中的取消按钮关闭应用程序, 在完成最大尝试次数后关闭应用程序。 暂停后台直到身份验证完成

我的代码是

import 'dart:async';
import 'package:LogInSignIn.dart';
import 'package:flutter/material.dart';
import 'package:cashhub/homescreen.dart';
import 'package:local_auth/local_auth.dart';
import 'package:flutter/services.dart';

void main() 
  setupLocator();
  runApp(new MaterialApp(
    debugShowCheckedModeBanner: false,
    home: new SplashScreen(),
    routes: <String, WidgetBuilder>
      '/HomeScreen': (BuildContext context) => new LogInSignIn(),
      

    ,
  ));


class SplashScreen extends StatefulWidget 
  @override
  _SplashScreenState createState() => new _SplashScreenState();


class _SplashScreenState extends State<SplashScreen> 
  //final LocalAuthenticationService _localAuth = locator<LocalAuthenticationService>();
  final LocalAuthentication auth = LocalAuthentication();
  bool _canCheckBiometrics;
  List<BiometricType> _availableBiometrics;
  String _authorized = 'Not Authorized';
  bool _isAuthenticating = false;

  startTime() async 
    var _duration = new Duration(seconds: 4);
    return new Timer(_duration, navigationPage);
  




  Future<void> _authenticate() async 
    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';
    // if( message == "Not Authorized")
    //   SystemNavigator.pop();
    // 
    setState(() 
      _authorized = message;
    );

  

  void navigationPage() 
    Navigator.of(context).pushReplacementNamed('/HomeScreen');
  
  @override
  void initState() 
    _authenticate();
    //autho();
    super.initState();

    startTime();

  

  @override
  Widget build(BuildContext context) 
    return new Scaffold(
      body: new Center(
        child: new Image.asset('assets/splashlogo.png',
        ),
      ),
    );
  

任何人请帮我解决这 3 个问题..

【问题讨论】:

谁能找到解决方案,我正要问同样的问题..? 【参考方案1】:

您可以像这样通过取消点击来关闭应用程序

setState(() 
  if (isAuthorized) 
    _authorizedOrNot = "Authorized";
   else 
    _authorizedOrNot = "Not Authorized";
    exit(0);
  
);

只是让你知道 exit(0) 需要导入 dart:io

【讨论】:

你能把我的代码加进去吗?我不清楚

以上是关于如何在本地身份验证中单击取消以及当最大尝试次数超过颤振时关闭应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Apache 中的基本 HTTP 身份验证在我取消登录时显示文件

如何在 laravel 中进行前端 api 身份验证

本地护照和本地护照猫鼬的身份验证错误

Azure Cloud 上的表单身份验证/配置文件速度慢,本地正常

springboot + shiro 尝试登录次数限制与并发登录人数控制

extjs3 网格单元最大长度输入验证