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; } }