как закрыть приложение при нажатии «Отмена» в локальной аутентификации, а также при превышении максимального количества попыток в flutter

#flutter #flutter-layout #flutter-dependencies #flutter-plugin #localauthentication

#flutter #flutter-layout #flutter-зависимости #flutter-плагин #локальная аутентификация

Вопрос:

Я новичок в flutter. Я хотел создать приложение с локальной биометрией, я использовал локальную аутентификацию, и мне нужна помощь

  1. закройте приложение нажатием кнопки отмена в local_auth,
  2. закройте приложение, когда будет выполнено максимальное количество попыток.
  3. приостановите фоновую проверку подлинности до завершения

мой код

 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. Может кто-нибудь найти решение, я собирался спросить то же самое ..?

2. Вы нашли решение для этого?

Ответ №1:

вы можете закрыть приложение, нажав «Отмена» следующим образом

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

просто чтобы вы знали, exit(0) нужно отключить dart: io

Комментарии:

1. можете ли вы добавить его в мой код, я не совсем понял