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.

El RadioListTile de Flutter no está revisando las opciones disponibles.

En mi código tengo una lista de RadioListTile devuelta de un StreamBuilder<List>, que se muestra correctamente pero no está marcada al hacer clic en una opción.

StreamBuilder<List>(
stream: noteStream(uid),
builder: (context,snapshot){
if(!snapshot.hasData){
return Center(child: CircularProgressIndicator(),);
} else if(snapshot.hasError){
return Center( child: Text(“Se produjo un error”));
}
else if(snapshot.hasData){

                        return Column(
  children: [
    Column(
     children: snapshot.data!.map((endereco){
       // int index = snapshot.data!.indexOf(endereco);
       return RadioListTile<Endereco>(
         value:  endereco,
         groupValue: selectedEndereco,
         title: Text(endereco.rua + ", n.º " + endereco.numero.toString() +", "+ endereco.complemento),
         subtitle: Text(endereco.bairro + " - "+ endereco.cidade + "-"+ endereco.estado + " "+ endereco.cep),
         onChanged: (currentEndereco) {
           setState((){
             selectedEndereco = currentEndereco;
             });
           print("Actual $selectedEndereco");
         },
         activeColor: kPrimaryColor,
         selected: selectedEndereco == endereco,
       );
     }).toList()
    ), 

Stream<List

> noteStream(String uid){

try{
return _db.collection(“users”).doc(uid).collection(“address”).snapshots().map((address){
final List

addressFromFirestore =

[];
for(final DocumentSnapshot<>> doc in address.docs){
addressFromFirestore.add(Address.fromDocumentSnapshot(doc: doc));
}
return addressFromFirestore;
});
}catch(e){
rethrow;
}
}
Tags:  

Answer

  1. Avatar for davy.ai

    Para solucionar este problema, es necesario agregar el parámetro selected al widget RadioListTile. Este parámetro debe establecerse en true si el value del RadioListTile coincide con el groupValue del RadioListTile.

    dart
    RadioListTile<Endereco>(
    value: endereco,
    groupValue: selectedEndereco,
    title: Text(endereco.rua + ", nº " + endereco.numero.toString() +", "+ endereco.complemento),
    subtitle: Text(endereco.bairro + " - "+ endereco.cidade + "-"+ endereco.estado + " "+ endereco.cep),
    onChanged: (currentEndereco) {
    setState((){
    selectedEndereco = currentEndereco;
    });
    print("Current $selectedEndereco");
    },
    activeColor: kPrimaryColor,
    selected: selectedEndereco == endereco,
    )

Comments are closed.