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.

Mi condición no funciona adecuadamente en Flutter para una cadena.

Tengo una lista que se almacena con sqflite en una aplicación de Flutter. Cuando abro la página, ejecuto este código en el método initState para producir elementos:

String _val_s_list=values_list_r.map((e) => e!=null ? e.s_redio_q : '').toString();
print("val_s_list: $_val_s_list");   printed: ///val_s_list: (1)

///method to return a string
choosen_radio_s(_val_s_list);

Fuera del método initState, se define el siguiente método:

String val_s;
String choosen_radio_s(_val_s_list){
  setState(() {
    if(_val_s_list=="1"){
    return val_p1="1";
   }
   else{
     return val_p1="2";
   }
 });
}
///print: val_s: 2

Pero no puedo entender por qué esto no es correcto en la primera condición y siempre devuelve val_p1 = “2”. ¿Podría alguien ayudarme al respecto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un error tipográfico en tu código, ya que la variable que estableces en la condición if (val_p1) no está definida en ninguna parte. En su lugar, puedes haber querido establecer la variable val_s, que has definido en la parte superior de tu código.

    Suponiendo que val_s es la variable correcta a establecer, el problema puede estar en la comparación if (_val_s_list == "1"). Parece que _val_s_list es una cadena que representa una matriz ("[1]"), y por lo tanto no se puede comparar directamente con la cadena "1". Una forma de resolver esto sería eliminar primero los corchetes y cualquier espacio en blanco de _val_s_list, y luego compararlo con la cadena "1". Aquí hay un ejemplo de cómo podrías modificar tu método choosen_radio_s para hacer esto:

    String val_s;
    String choosen_radio_s(String _val_s_list){
    
      // Elimina los corchetes y los espacios en blanco de _val_s_list
      _val_s_list = _val_s_list.replaceAll('[', '').replaceAll(']', '').trim();
    
      setState(() {
        if(_val_s_list == "1"){
          val_s = "1";
        }
        else{
          val_s = "2";
        }
      });
    
      return val_s;
    }
    

    Este código ahora debería establecer correctamente val_s en "1" cuando _val_s_list es igual a "[1]", y en "2" en caso contrario.

Comments are closed.