es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede escribir texto en el campo de pin de texto (sms_autofill: ^2.2.0)

No se puede escribir el código OTP en el campo de PIN de texto (sms_autofill: ^2.2.0) cuando está activado el temporizador, puedo escribir después de que el temporizador se apague, el registro de depuración muestra “la vista no es EditText”.

Declaré int para establecer el tiempo

Timer? _timer;
int _start = 60;

Método para llamar al temporizador, este temporizador se llama cuando se envía el OTP correctamente.

void startTimer() {
  const oneSec = const Duration(seconds: 1);
  _timer = new Timer.periodic(
    oneSec,
    (Timer timer) {
      if (_start == 0) {
        setState(() {
          timer.cancel();
        });
      } else {
        setState(() {
          _start--;
        });
      }
    },
  );
}

Campo de OTP para ingresar el OTP

PinFieldAutoFill(
  codeLength: 6,
  decoration: const UnderlineDecoration(
    bgColorBuilder: FixedColorBuilder(Colors.white),
    textStyle: TextStyle(
      fontSize: 22,
      color: Colors.black,
      fontWeight: FontWeight.bold),
    colorBuilder: FixedColorBuilder(Colors.white),
  ),
  currentCode: _code,
  onCodeSubmitted: (code) {
    setState(() {
      _code = code;
    });
    if (code.length == 6) {
      setState(() {
        isLoading2 = true;
      });
      handleSignIn();
    } else {
      Fluttertoast.showToast(
          msg: 'Ingrese el código correcto',
          backgroundColor: Colors.black.withOpacity(0.95),
          textColor: Colors.white);
    }
  },
  onCodeChanged: (code) {
    if (code!.length == 6) {
      FocusScope.of(this.context).requestFocus(FocusNode());
      setState(() {
        _code = code;
      });
    }
  },
),

Imagen del problema

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que cuando el temporizador está encendido, no puedes escribir el código OTP en el campo de texto del pin. Según el registro de depuración, muestra “la vista no es EditText”.

    Para resolver este problema, puedes intentar usar la versión 2.2.0 del paquete sms_autofill. Este paquete proporciona funcionalidad para llenar automáticamente los códigos OTP enviados a través de SMS.

    Para implementarlo, puedes agregar el paquete sms_autofill como una dependencia en tu archivo pubspec.yaml. Luego, en tu widget PinFieldAutoFill, puedes agregar el parámetro sms_autofill: ^2.2.0.

    También puedes asegurarte de que la vista EditText se esté utilizando correctamente en tu código. Verifica que hayas importado las clases correctas y que se estén utilizando correctamente en tu árbol de widgets.

    Adicionalmente, puedes intentar desactivar el temporizador mientras se ingresa el código OTP. Esto se puede hacer cancelando el temporizador y reiniciándolo una vez que se haya ingresado correctamente el código OTP.

Comments are closed.