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.

Cómo recuperar los datos del valor ingresado en el campo de texto.

Quiero que se muestre en la pantalla tan pronto como ingrese la ubicación, ¿cómo puedo hacerlo?

Tengo que usar ctrl + s cuando intento de esta manera

  Future<void> getData() async{
   data = await client.getCurrentWeather(locatian.text.toString());
  }

TextEditingController locatian = new TextEditingController();

    body: FutureBuilder(
      future: getData(),
      builder: (context, snapshot){
        if(snapshot.connectionState==ConnectionState.done){
          return Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(9.0),
                child: TextField(
                  controller: locatian,
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                    hintText: "Sehir Giriniz",
                    prefixIcon: Icon(Icons.search),
                  ),
                ),
              ),
              GuncelVeri(Icons.wb_sunny_rounded, "${data?.derece}", "${data?.sehir}"),
              bilgiler("${data?.humidity}","${data?.feels_like}", "${data?.pressure}"),],
          );

“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar los datos en la pantalla tan pronto como el usuario ingrese la ubicación, puede utilizar el método onChanged del TextEditingController para activar la función getData() y actualizar el FutureBuilder con los datos obtenidos. De esta manera, los datos se mostrarán en la pantalla tan pronto como el usuario ingrese la ubicación sin necesidad de utilizar Ctrl + S para actualizar la pantalla.

    Aquí hay una implementación de ejemplo:

    TextEditingController location = TextEditingController();
    WeatherData data;
    
    void getData() async {
      data = await client.getCurrentWeather(location.text.toString());
      // setState() para actualizar la pantalla con los datos obtenidos
      setState(() {});
    }
    
    @override
    Widget build(BuildContext context) {
      return Column(
        children: [
          Padding(
            padding: const EdgeInsets.all(9.0),
            child: TextField(
              controller: location,
              onChanged: (value) => getData(),
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                hintText: "Ingrese la ciudad",
                prefixIcon: Icon(Icons.search),
              ),
            ),
          ),
          // verifica si los datos no son nulos antes de acceder a sus propiedades
          if (data != null)
            Column(
              children: [
                GuncelVeri(
                  Icons.wb_sunny_rounded,
                  "${data.derece}",
                  "${data.sehir}",
                ),
                bilgiler(
                  "${data.humidity}",
                  "${data.feels_like}",
                  "${data.pressure}",
                ),
              ],
            ),
        ],
      );
    }
    

Comments are closed.