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.

Las variables de la aplicación Flutter se reinician cada vez que se abandona la página.

Estoy haciendo una aplicación de flutter. Cada vez que salgo de la página, las variables se reinician. ¿Cómo hago para que los datos se mantengan iguales, aunque se salga de la página? Estoy usando getx para la gestión del estado. Aquí está mi código:
“`
//Botón que abandona la página
Align(
alignment: Alignment.topLeft,
child: IconButton(
onPressed: () => Get.back(),
icon: const Icon(Icons.arrow_back),
),
),

Cuando se presiona el botón, abandona la página y reinicia la variable maintasks que se muestra aquí:
Align(
alignment: Alignment.topLeft,
child: Padding(
padding: const EdgeInsets.only(left: 25.0),
child: Text(
maintasks,
style: const TextStyle(
fontSize: 23,
color: Colors.black,
fontWeight: FontWeight.w800,
),
),
),
),

Hay una función que cambia la variable maintasks por la entrada del usuario. Sin embargo, esta entrada de usuario se reinicia cada vez que se sale de la página. He intentado usar SetState para guardar la variable, pero por alguna razón no funciona.

Lo siento si mi pregunta está mal redactada. Si alguien sabe cómo hacer esto, por favor dígame. Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para hacer que los datos persistan incluso después de salir de la página, puedes usar la funcionalidad de gestión de estado de GetX. Específicamente, puedes utilizar los controladores de GetX para almacenar y persistir tus datos en toda tu aplicación.

    Así es como puedes hacerlo:

    1. Crea un controlador para administrar tus datos
    class MyController extends GetxController {
      var maintasks = ''.obs;
    
      void updateMaintasks(String newTask) {
        maintasks.value = newTask;
      }
    }
    
    1. En tu página, crea una instancia del controlador y usa sus variables y funciones
    class MyPage extends StatelessWidget {
      final MyController myController = Get.put(MyController());
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Column(
            children: [
              // ... tu código existente
    
              Align(
                alignment: Alignment.topLeft,
                child: IconButton(
                  onPressed: () => Get.back(),
                  icon: const Icon(Icons.arrow_back),
                ),
              ),
    
              Padding(
                padding: const EdgeInsets.only(left: 25.0),
                child: Text(
                  myController.maintasks.value,
                  style: const TextStyle(
                    fontSize: 23,
                    color: Colors.black,
                    fontWeight: FontWeight.w800,
                  ),
                ),
              ),
    
              // ... tu código existente
    
              // Tu campo de entrada
              TextFormField(
                onChanged: (value) => myController.updateMaintasks(value),
              )
            ],
          ),
        );
      }
    }
    

    En este código, creamos una instancia del controlador MyController y usamos el método Get.put() de GetX para ponerlo en memoria. Luego, usamos la variable maintasks del controlador para mostrar nuestras tareas en el widget de texto. Finalmente, usamos el método updateMaintasks() del controlador para actualizar el valor de maintasks cuando el usuario escribió en el campo de entrada.

    Al hacer esto, el estado de MyController se preserva entre las navegaciones de página.

Comments are closed.