1
resposta

Não consegui habilitar a biometria

Infelizmente eu não consegui habilitar a biometria. Já revisei todo o codigo, habilitei a autorização no AndroidManifest, a opção aparece mas quando clico estoura a seguinte exceção:

/flutter (30406): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(NotAvailable, Required security features not enabled, null, null)
E/flutter (30406): #0      StandardMethodCodec.decodeEnvelope
package:flutter/…/services/message_codecs.dart:597
E/flutter (30406): #1      MethodChannel._invokeMethod
package:flutter/…/services/platform_channel.dart:158
E/flutter (30406): <asynchronous suspension>
E/flutter (30406): #2      LocalAuthentication.authenticate
package:local_auth/local_auth.dart:124
E/flutter (30406): <asynchronous suspension>
E/flutter (30406): #3      Biometria._autenticarCliente
package:bytebank/components/biometria.dart:35
E/flutter (30406): <asynchronous suspension>
E/flutter (30406): #4      Biometria._telaAutenticacao.<anonymous closure>
package:bytebank/components/biometria.dart:56
E/flutter (30406): <asynchronous suspension>
E/flutter (30406):

Minha classe registrar biometria está assim:

import 'package:bytebank/models/cliente.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';
import 'package:provider/provider.dart';

class Biometria extends StatelessWidget {
  final LocalAuthentication _authenticatorLocal = LocalAuthentication();

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _biometriaDisponivel(),
      builder: (context, snapshot) {
        if (snapshot.data == true) {
          return _telaAutenticacao(context);
        }
        return Container();
      },
    );
  }

  Future<bool> _biometriaDisponivel() async {
    try {
      final isAvailable = await _authenticatorLocal.canCheckBiometrics;
      final isDeviceSupported = await _authenticatorLocal.isDeviceSupported();
      return isAvailable;
    } on PlatformException catch (erro) {
      print(erro);
    }
  }

  Future<void> _autenticarCliente(context) async {
    bool autenticado = false;
    autenticado = await _authenticatorLocal.authenticate(
        biometricOnly: true,
        stickyAuth: true,
        localizedReason: 'Favor autenticar no app :D',
        useErrorDialogs: true);
    Provider.of<Cliente>(context).biometria = autenticado;
  }

  Widget _telaAutenticacao(context) {
    return Padding(
      padding: EdgeInsets.only(top: 15, bottom: 15),
      child: Column(
        children: [
          Text(
            'Detectamos que vc tem sensor biométrico em seu smartphone. Deseja cadastrar o acesso biométrico?',
            style: TextStyle(fontWeight: FontWeight.bold),
          ),
          SizedBox(
            height: 20,
          ),
          RaisedButton(
            onPressed: () async => await _autenticarCliente(context),
            child: Text('Habilitar biometria'),
          ),
        ],
      ),
    );
  }
}
1 resposta

Olá Léo, você pode disponibilizar seu código pra gente dar uma olhadinha com carinho?

Se mandar um repositorio no githube é melhor ainda

Ao que parece é um problema com o manejo da autoriozação, mas pode muito bem ser um bug também.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software