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?
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 variableval_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ónif (_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étodochoosen_radio_s
para hacer esto: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.