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;
});
}
},
),
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 archivopubspec.yaml
. Luego, en tu widgetPinFieldAutoFill
, puedes agregar el parámetrosms_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.