Je veux changer de couleur de boîte dynamique en fonction de l'état dans une API JSON. Par exemple, approuvé = couleurs.green, rejeté = couleurs.red, soumis = couleurs.blue.
C'est l'image de mon application actuelle Je souligne le statut p>
Comment peut-il y parvenir? p>
C'est comme ça que je reçois l'API: P>
Widget _buildEventList() {
return ListView(
children: _selectedEvents
.map((event) => Container(
decoration: BoxDecoration(
color: Colors.blue, // i want to change the color
border: Border.all(width: 0.8),
borderRadius: BorderRadius.circular(12.0),
),
margin: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
child: ListTile(
title: Text(event.toString()),
onTap: () => print('$event tapped!'),
),
))
.toList(),
);
}
4 Réponses :
Vous pouvez créer une méthode pour renvoyer la couleur en fonction de la condition (en supposant événement.tostring () = rejeté code>, approuvé code> ou soumis code>) :
Color _getColorByEvent(String event) {
if (event == "Approved") return Colors.green;
if (event == "Rejected") return Colors.red;
return Colors.blue;
}
...
BoxDecoration(
color: _getColorByEvent(event.toString()), // i want to change the color
border: Border.all(width: 0.8),
borderRadius: BorderRadius.circular(12.0),
),
Méthode d'appel de couleur par exemple
return ListView(
children: _selectedEvents
.map((event) => Container(
decoration: BoxDecoration(
color: Colors.blue, // i want to change the color
border: Border.all(width: 0.8),
borderRadius: BorderRadius.circular(12.0),
),
margin: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
child: ListTile(
title: Text(event.toString()),
onTap: () => print('$event tapped!'),
),
))
.toList(),
);
}
Color _getColor(Map event){ swith(event) { return value } }
Créer une paire de clé de clé de carte, comme ceci. puis passe la touche pour mapper que vous obtiendrez une valeur correspondante à la clé correspondante. P> P>
C'est comme ça que j'ai fait ...
Color getColorForStatus(OrderStatus event) {
switch (event) {
case OrderStatus.PLACED:
return Colors.black;
break;
case OrderStatus.ORDER_CONFIRMED:
return Colors.lightBlue;
break;
case OrderStatus.OUT_FOR_DELIVERY:
return new Color(0xFFE5AC0E);
break;
case OrderStatus.DELIVERED:
return Colors.green;
break;
case OrderStatus.PAYMENT_DECLINED:
return new Color(0xFFFFA401);
break;
case OrderStatus.CANCELED:
return Colors.red;
break;
default:
return Colors.black;
break;
}
}