Si encuentras alguna parte que te causa duda puedes dejarlo en la sección de comentarios y te ayudaremos lo más rápido posible.
Solución:
Tiene el siguiente código en su función de compilación:
final formKey = GlobalKey();
Este es el problema. Tienes que hacerlo static o mudarse a
initState()
Veo que ha declarado formkey dentro de la función de compilación.
Debe estar fuera de la función de compilación. Echa un vistazo aquí
Voy a publicar mi respuesta aquí, aunque no es exactamente el mismo problema que el OP.
Busqué en Internet por todas partes este problema del teclado que aparecía y desaparecía, y
1. Esta fue la única pregunta SO que encontré que describe el problema de desaparición del teclado, y
2. las otras soluciones disponibles, como la respuesta de @apc y esta respuesta de github, están todas enfocadas en el formKey
siendo static
y/o un GlobalKey
y definitivamente esa no fue la causa de mi problema (tener keys o recreado keys para mi formulario, y/o sus campos, no tuvo ningún efecto en el problema).
Mi problema específico implicaba un class AuthService with ChangeNotifier
con un número de Future
métodos.
Después de literalmente días de probar diferentes enfoques, descubrí que el solamente La forma en que podía evitar el problema de que el teclado apareciera y desapareciera instantáneamente en el campo de formulario era tener el AuthService()
estar en el nivel superior de mi aplicación, en runApp()
:
void main() => runApp(
ChangeNotifierProvider(
child: TheWidgetThatIsMyAppAndHasAllBusinessLogicInIt(),
builder: (BuildContext context)
return AuthService();
,
),
);
(Teniendo la ChangeNotifierProvider
en cualquier otro lugar del código, el teclado desaparece)
Luego tuve que ser creativo sobre cómo estructuré mi lógica bajo esto, porque realmente solo me importa AuthService en ciertas partes de mi aplicación, pero soy muy nuevo en Flutter y todo ha sido un buen aprendizaje.
No sé por qué es esto, y me encantaría aprender más, y sé que no he explicado mi situación completa…
pero pasé literalmente días resolviendo esto, necesitaba poner mi respuesta aquí para ayudar a otros.
Si tienes algún titubeo o capacidad de perfeccionar nuestro tutorial te mencionamos dejar una observación y con placer lo leeremos.