Pas exactement comme le CSS, mais
[Link] offre une série d'options pour
styliser un bouton dans Flutter. Ce n’est pas aussi
universel que le CSS, mais c’est très flexible et
adapté aux boutons.
Voici une liste des propriétés que tu peux utiliser
dans [Link] :
Les Propriétés Disponibles
1. backgroundColor
o Définit la couleur de fond du bouton.
o Exemple : backgroundColor: [Link]
2. foregroundColor
o Définit la couleur principale (texte, icône,
etc.).
o Exemple : foregroundColor: [Link]
3. disabledForegroundColor
o Couleur du texte quand le bouton est
désactivé.
o Exemple : disabledForegroundColor: [Link]
4. disabledBackgroundColor
o Couleur de fond quand le bouton est
désactivé.
o Exemple : disabledBackgroundColor:
[Link][400]
5. shadowColor
o Couleur de l'ombre portée.
o Exemple : shadowColor: [Link]
6. surfaceTintColor
o Couleur d'accentuation de surface
(surtout pour les boutons Material3).
o Exemple : surfaceTintColor: [Link]
7. elevation
o Définit la hauteur de l'ombre du bouton
(élévation).
o Exemple : elevation: 5.0
8. padding
o Définit l’espace interne (marges
internes).
o Exemple : padding:
[Link](horizontal: 20, vertical: 10)
9. minimumSize
o Définit la taille minimale du bouton.
o Exemple : minimumSize: Size(100, 40)
10. maximumSize
o Définit la taille maximale du bouton.
o Exemple : maximumSize: Size(200, 60)
11. fixedSize
o Définit une taille fixe pour le bouton.
o Exemple : fixedSize: Size(150, 50)
12. shape
o Définit la forme du bouton.
o Exemple :
o shape: RoundedRectangleBorder(
o borderRadius: [Link](10),
o )
13. side
o Définit les bordures du bouton.
o Exemple :
o side: BorderSide(color: [Link], width: 2)
Exemple Complet
TextButton(
onPressed: () {
print("Bouton stylisé !");
},
style: [Link](
backgroundColor: [Link],
foregroundColor: [Link],
padding: [Link](16),
elevation: 5,
shape: RoundedRectangleBorder(
borderRadius: [Link](20),
),
),
child: Text("Mon bouton stylisé"),
)
Notes :
[Link] propriétés comme padding, elevation, et
shape sont très utiles pour personnaliser.
[Link] [Link] ne suffit pas, tu peux
aller encore plus loin avec ButtonStyle, qui
offre une personnalisation encore plus
poussée (via des résolveurs dynamiques).
En résumé, tu as beaucoup de flexibilité !
Flutter n'est pas du CSS, mais il te donne un
contrôle stylisé similaire pour des cas
spécifiques comme les boutons.
Autres Options pour shape
[Link] classique
dart
CopierModifier
shape: RoundedRectangleBorder(
borderRadius: [Link],
)
oDonne un bouton à angles droits (sans
arrondi).
[Link] complet
dart
CopierModifier
shape: CircleBorder()
oCrée un bouton circulaire.
[Link] avec bordure personnalisée
dart
CopierModifier
shape: BeveledRectangleBorder(
borderRadius: [Link](10),
)
o Crée une forme rectangulaire biseautée.
[Link] irrégulière (Path)
Pour des formes plus complexes, tu peux
utiliser ContinuousRectangleBorder ou même
créer une forme personnalisée.
Exemple Complet
dart
CopierModifier
TextButton(
onPressed: () {
print("Forme personnalisée !");
},
style: [Link](
backgroundColor: [Link],
foregroundColor: [Link],
shape: RoundedRectangleBorder(
borderRadius: [Link](15),
side: BorderSide(color: [Link], width: 2),
),
),
child: Text("Bouton stylisé"),
)
Ici :
backgroundColor donne une couleur de fond
violette.
side ajoute une bordure blanche de 2 pixels.
shape applique des coins arrondis.
Oui, [Link] (et les styles similaires
pour ElevatedButton et OutlinedButton) offre plusieurs
attributs pour personnaliser ton bouton au
maximum. Voici une liste des attributs principaux
que tu peux utiliser, comme shape, pour styliser
tes boutons :
Principaux Attributs de [Link]
1. backgroundColor
o Définit la couleur de fond du bouton.
o Exemple :
o backgroundColor: [Link],
2. foregroundColor
o Définit la couleur du texte et des icônes
dans le bouton.
o Exemple :
o foregroundColor: [Link],
3. elevation
o Définit l’élévation (ombre) du bouton.
Plus la valeur est élevée, plus l’ombre est
marquée.
o Exemple :
o elevation: 5,
4. padding
o Définit l’espacement intérieur (marge
interne) autour du contenu du bouton.
o Exemple :
o padding: [Link](horizontal: 20,
vertical: 10),
5. textStyle
o Applique un style spécifique au texte
(taille, graisse, etc.).
o Exemple :
o textStyle: TextStyle(fontSize: 18, fontWeight:
[Link]),
6. shape
o Définit la forme du bouton (comme
expliqué plus tôt).
o Exemple :
oshape: RoundedRectangleBorder(
o borderRadius: [Link](20),
o ),
7. minimumSize
o Définit la taille minimale du bouton
(largeur et hauteur).
o Exemple :
ominimumSize: Size(100, 50),
8. maximumSize
o Définit la taille maximale du bouton.
o Exemple :
o maximumSize: Size(200, 80),
9. fixedSize
o Définit une taille fixe pour le bouton.
o Exemple :
o fixedSize: Size(150, 50),
10. side
o Ajoute une bordure autour du bouton
(utile avec OutlinedButton).
o Exemple :
o side: BorderSide(color: [Link], width: 2),
11. alignment
o Définit l’alignement interne du contenu
(texte ou icône) dans le bouton.
o Exemple :
o alignment: [Link],
12. visualDensity
o Ajuste la densité visuelle du bouton pour
un espacement plus ou moins compact.
o Exemple :
o visualDensity: [Link],
Exemple de Bouton Stylisé
TextButton(
onPressed: () {
print("Bouton stylisé cliqué !");
},
style: [Link](
backgroundColor: [Link],
foregroundColor: [Link],
padding: [Link](15),
shape: RoundedRectangleBorder(
borderRadius: [Link](30),
side: BorderSide(color: [Link], width: 2),
),
textStyle: TextStyle(fontSize: 20, fontStyle: [Link]),
elevation: 5,
minimumSize: Size(120, 50),
),
child: Text("Mon Bouton"),
)
En résumé :
Les attributs comme shape, padding, elevation,
et textStyle permettent de personnaliser ton
bouton à fond.
Tu peux presque tout modifier : la couleur, la
taille, la bordure, l'alignement, etc.
Ces options te donnent beaucoup de contrôle,
comme en CSS, mais adaptées au framework
Flutter.
Amuse-toi avec ces attributs pour créer des
designs uniques ! 🚀
Pour positionner un élément en Flutter, il existe
plusieurs façons en fonction du widget parent que
tu utilises. Voici les principales options :
1. Centrer un élément
Utilise le widget Center.
Ce widget place automatiquement son enfant au
centre de l’écran.
Exemple :
Center(
child: Text("Centré"),
)
2. Aligner un élément à gauche, à droite, ou
ailleurs
Utilise le widget Align avec l’attribut alignment.
Exemple :
Align(
alignment: [Link], // À gauche
child: Text("Aligné à gauche"),
)
Tu peux utiliser les options suivantes :
[Link] : centre l’élément.
[Link] : en haut à gauche.
[Link] : en bas à droite.
Alignment(0.5, 0.5) : position personnalisée
(valeurs entre -1 et 1).
3. Positionner avec des marges
Utilise le widget Padding pour ajouter de l’espace
autour d’un élément.
Exemple :
Padding(
padding: [Link](left: 20.0), // Espacement à gauche
child: Text("Avec marge à gauche"),
)
4. Positionnement dans une Column ou une
Row
Avec Row (horizontal) ou Column (vertical), utilise
MainAxisAlignment ou CrossAxisAlignment pour
positionner tes éléments.
Exemple (centré dans une colonne) :
Column(
mainAxisAlignment: [Link], // Centrer
verticalement
crossAxisAlignment: [Link], // Centrer
horizontalement
children: [
Text("Centré verticalement"),
],
)
5. Positionnement libre avec Stack
Utilise le widget Stack pour placer des éléments
librement grâce à Positioned.
Exemple :
Stack(
children: [
Positioned(
top: 50, // Distance depuis le haut
left: 20, // Distance depuis la gauche
child: Text("Position libre"),
),
],
)
6. Positionnement basé sur l’écran avec
Spacer ou Expanded
Pour répartir l’espace automatiquement.
Exemple :
Row(
children: [
Spacer(), // Ajoute de l’espace flexible à gauche
Text("Aligné à droite"),
],
)
Tableau récapitulatif des options :
Widget Positionnement Exemple
Center Centre tout Center(child: Text("Centré"))
Alignement précis Align(alignment:
Align
(gauche, droite, etc.) [Link])
Padding(padding:
Padding Ajouter des marges
[Link](10))
Row/ Espacement en ligne Row(mainAxisAlignment:
Column ou colonne [Link])
Stack Positionnement libre Positioned(top: 10, left: 10)
Avec ces outils, tu as le contrôle total sur
l’agencement de tes éléments ! 🎯
En Flutter, il existe différents types de boutons
avec leurs propres fonctionnalités et styles. Voici
un guide complet des principaux boutons, leurs
propriétés et des exemples pour chacun.
1. ElevatedButton
Description :
Bouton surélevé avec une ombre (anciennement
RaisedButton).
Propriétés principales :
onPressed: Action déclenchée lorsque le bouton est
appuyé.
onLongPress: Action déclenchée sur un appui long.
child: Contenu du bouton (texte, icône, etc.).
style: Permet de personnaliser l'apparence (couleur,
forme, etc.).
Exemple :
ElevatedButton(
onPressed: () {
print('Bouton appuyé');
},
onLongPress: () {
print('Appui long détecté');
},
style: [Link](
backgroundColor: [Link], // Couleur de fond
foregroundColor: [Link], // Couleur du texte
shape: RoundedRectangleBorder( // Forme du bouton
borderRadius: [Link](10),
),
),
child: Text("Elevated Button"),
),
2. TextButton
Description :
Bouton textuel sans ombre (anciennement
FlatButton).
Propriétés principales :
onPressed: Action déclenchée à l'appui.
child: Contenu du bouton.
style: Personnalisation du style.
Exemple :
TextButton(
onPressed: () {
print('TextButton pressé');
},
style: [Link](
foregroundColor: [Link], // Couleur du texte
backgroundColor: [Link][200], // Couleur de fond
),
child: Text("Text Button"),
),
3. OutlinedButton
Description :
Bouton avec une bordure.
Propriétés principales :
onPressed: Action déclenchée.
child: Contenu du bouton.
style: Permet de modifier la bordure, la couleur, etc.
Exemple :
OutlinedButton(
onPressed: () {
print('OutlinedButton appuyé');
},
style: [Link](
side: BorderSide(color: [Link], width: 2), // Bordure
shape: RoundedRectangleBorder(
borderRadius: [Link](10),
),
),
child: Text("Outlined Button"),
),
4. IconButton
Description :
Bouton avec une icône (pas de texte).
Propriétés principales :
icon: L'icône affichée sur le bouton.
onPressed: Action déclenchée.
color: Couleur de l'icône.
iconSize: Taille de l'icône.
Exemple :
IconButton(
icon: Icon([Link]),
color: [Link],
iconSize: 30.0,
onPressed: () {
print('Icône cliquée');
},
),
5. FloatingActionButton
Description :
Bouton flottant souvent utilisé pour des actions
principales (ex. : Ajouter).
Propriétés principales :
onPressed: Action déclenchée.
child: Contenu du bouton (souvent une icône).
backgroundColor: Couleur de fond.
Exemple :
FloatingActionButton(
onPressed: () {
print('FAB pressé');
},
backgroundColor: [Link],
child: Icon([Link]),
),
6. DropdownButton
Description :
Bouton déroulant pour sélectionner une valeur
parmi plusieurs.
Propriétés principales :
value: La valeur actuellement sélectionnée.
items: Liste des options (DropdownMenuItem).
onChanged: Action déclenchée lorsqu’une option est
sélectionnée.
Exemple :
String dropdownValue = 'Option 1';
DropdownButton<String>(
value: dropdownValue,
onChanged: (String? newValue) {
dropdownValue = newValue!;
print('Nouvelle valeur : $dropdownValue');
},
items: <String>['Option 1', 'Option 2', 'Option 3']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
7. PopupMenuButton
Description :
Bouton qui affiche un menu contextuel.
Propriétés principales :
itemBuilder: Définit les options du menu.
onSelected: Action déclenchée lorsqu’une option est
sélectionnée.
Exemple :
PopupMenuButton<String>(
onSelected: (value) {
print('Option sélectionnée : $value');
},
itemBuilder: (BuildContext context) {
return [
PopupMenuItem(value: 'Option 1', child: Text('Option 1')),
PopupMenuItem(value: 'Option 2', child: Text('Option 2')),
];
},
),
Propriétés communes pour tous les boutons :
1. onPressed : Action exécutée lorsqu’on clique sur le
bouton.
2. child : Widget contenu dans le bouton (texte, icône,
etc.).
3. style : Personnalisation avancée du bouton via
ButtonStyle.
4. padding : Marges internes du bouton.
5. shape : Définir la forme du bouton (ex. :
RoundedRectangleBorder).
6. elevation : Hauteur de l’ombre (pour
ElevatedButton).
Résumé rapide des styles de bouton :
Pour personnaliser un bouton, tu peux utiliser style
:
style: ButtonStyle(
backgroundColor: [Link]([Link]), //
Couleur de fond
foregroundColor: [Link]([Link]), //
Couleur du texte
padding: [Link]([Link](10)), //
Marges internes
shape: [Link](
RoundedRectangleBorder(
borderRadius: [Link](10), // Bord arrondi
),
),
),
Si tu as un exemple spécifique ou un besoin
précis, je peux détailler davantage ! 😎
En Flutter, le style d'un bouton est configuré via
la propriété style. Voici toutes les propriétés de
style principales que tu peux utiliser pour
personnaliser un bouton. Ces propriétés
fonctionnent pour les boutons comme
ElevatedButton, TextButton, et OutlinedButton, et sont
définies avec ButtonStyle.
Propriétés de ButtonStyle :
1. backgroundColor
o Définit la couleur de fond du bouton.
o Utilise MaterialStateProperty pour gérer les
états (exemple : survolé, désactivé, etc.).
Exemple :
style: ButtonStyle(
backgroundColor: [Link]([Link]),
),
2. foregroundColor
o Définit la couleur du texte ou de l'icône
dans le bouton.
Exemple :
style: ButtonStyle(
foregroundColor: [Link]([Link]),
),
3. overlayColor
o Couleur affichée lorsque l'utilisateur
interagit avec le bouton (ex. : clic ou
appui long).
Exemple :
style: ButtonStyle(
overlayColor:
[Link]([Link](0.2)),
),
4. shadowColor
o Couleur de l'ombre du bouton (utilisé
principalement pour les ElevatedButton).
Exemple :
style: ButtonStyle(
shadowColor: [Link]([Link]),
),
5. elevation
o Hauteur de l'ombre sous le bouton (0
pour désactiver l'ombre).
Exemple :
style: ButtonStyle(
elevation: [Link](5),
),
6. padding
o Définit les marges internes entre le
contenu (texte/icône) et les bords du
bouton.
Exemple :
style: ButtonStyle(
padding:
[Link]([Link](horizontal:
20, vertical: 10)),
),
7. minimumSize
o Définit la taille minimale du bouton.
Exemple :
style: ButtonStyle(
minimumSize: [Link](Size(100, 40)), //
largeur 100, hauteur 40
),
8. fixedSize
o Définit une taille fixe pour le bouton
(ignorera les contraintes de taille).
Exemple :
style: ButtonStyle(
fixedSize: [Link](Size(200, 50)), //
largeur et hauteur fixes
),
9. maximumSize
o Définit la taille maximale du bouton.
Exemple :
style: ButtonStyle(
maximumSize: [Link](Size(300, 50)),
),
10. shape
o Définit la forme du bouton (arrondi,
rectangle, cercle...).
Exemple :
style: ButtonStyle(
shape: [Link](
RoundedRectangleBorder(
borderRadius: [Link](15), // Bouton
arrondi
),
),
),
11. side
o Définit la bordure du bouton (utile pour
OutlinedButton).
Exemple :
style: ButtonStyle(
side: [Link](
BorderSide(color: [Link], width: 2),
),
),
12. textStyle
o Permet de personnaliser la police, la taille
du texte, le poids, etc.
Exemple :
style: ButtonStyle(
textStyle: [Link](
TextStyle(fontSize: 18, fontWeight: [Link]),
),
),
13. alignment
o Aligne le contenu (texte/icone) dans le
bouton.
Exemple :
style: ButtonStyle(
alignment: [Link], // Contenu aligné à
gauche
),
14. animationDuration
o Définit la durée de l'animation des états
(ex. : lorsque la couleur change).
Exemple :
style: ButtonStyle(
animationDuration: Duration(milliseconds: 300),
),
15. tapTargetSize
o Détermine la taille de la zone cliquable
(exemple : réduit ou agrandit la zone).
Valeurs possibles :
o [Link]: Zone ajustée
au contenu.
o [Link]:
Zone étendue
pour un meilleur confort d'interaction.
Exemple :
style: ButtonStyle(
tapTargetSize: [Link],
),
16. mouseCursor
o Définit le curseur de souris lorsque le
bouton est survolé (pour les applications
Desktop/Web).
Exemple :
style: ButtonStyle(
mouseCursor:
[Link]([Link]),
),
17. enableFeedback
o Active ou désactive les retours
haptiques/sonores lors de l'appui sur le
bouton.
Exemple :
style: ButtonStyle(
enableFeedback: true, // ou false
),
Exemple complet avec toutes les
propriétés :
ElevatedButton(
onPressed: () {
print('Bouton pressé');
},
style: ButtonStyle(
backgroundColor: [Link]([Link]), //
Couleur de fond
foregroundColor: [Link]([Link]), //
Couleur du texte
shadowColor: [Link]([Link]), //
Couleur de l'ombre
elevation: [Link](5), // Hauteur de l'ombre
padding: [Link]([Link](15)), //
Marges internes
minimumSize: [Link](Size(150, 50)), //
Taille minimale
shape: [Link](
RoundedRectangleBorder(
borderRadius: [Link](10), // Coins arrondis
),
),
textStyle: [Link](
TextStyle(fontSize: 18, fontWeight: [Link]), //
Style du texte
),
overlayColor:
[Link]([Link](0.2)), //
Couleur d'appui
),
child: Text("Bouton stylé"),
),
Résumé :
En utilisant ButtonStyle, tu peux personnaliser
presque tout :
Couleurs (backgroundColor, foregroundColor,
overlayColor, etc.).
Forme (shape, side, etc.).
Taille (minimumSize, maximumSize, fixedSize).
Texte (textStyle).
Interaction (curseur, animation, etc.).
Si tu as besoin d'une personnalisation spécifique,
n'hésite pas à demander ! 🚀
SafeArea(
child: ClipRRect(
child: BackdropFilter(
filter: [Link](sigmaX: 15, sigmaY: 15),
child: Container(
color: [Link]
.withOpacity(0.2), // Couleur semi-transparente
padding: const [Link](
horizontal: 16.0, vertical: 40.0),
child: Row(
mainAxisAlignment:
[Link],
children: [
Text(
'Effet Flou Apple',
style: TextStyle(
fontSize: 20,
color: [Link],
),
),
],
),
),
),
),
)
La propriété decoration est un aspect très important de Flutter qui te permet de personnaliser
l'apparence visuelle d'un Container ou d'autres widgets comme BoxDecoration. Elle est
souvent utilisée pour appliquer des effets de style tels que des couleurs de fond, des bordures,
des ombres, des dégradés, des images de fond et des coins arrondis.
Quand utiliser la propriété decoration :
Tu utilises decoration principalement lorsque tu veux personnaliser l'apparence de
conteneurs, de cartes, de boutons, ou d'autres éléments visuels qui nécessitent un style ou une
mise en forme complexe.
Arrière-plan (couleurs ou images)
Bordures et ombres
Coins arrondis
Dégradés
Exemple d’utilisation :
Voici comment utiliser la propriété decoration dans un Container :
Container(
decoration: BoxDecoration(
color: [Link], // Couleur de fond
borderRadius: [Link](10.0), // Coins arrondis
border: [Link](color: [Link], width: 2), // Bordure noire de
2px
boxShadow: [
BoxShadow(
color: [Link](0.3), // Ombre légère
blurRadius: 10.0, // Rayon de flou de l'ombre
offset: Offset(5, 5), // Décalage de l'ombre
),
],
image: DecorationImage(
image: AssetImage('assets/[Link]'), // Image de fond
fit: [Link], // Adapter l'image à la taille du container
),
),
)
Détail des propriétés de BoxDecoration :
1. color :
o Définit la couleur de fond du Container.
o Utilisé lorsque tu veux une couleur unie comme arrière-plan.
o Exemple : color: [Link]
2. borderRadius :
o Permet de définir des coins arrondis pour le Container.
o Prend un objet BorderRadius avec des valeurs comme
[Link](double radius) ou [Link](...)
pour chaque coin individuellement.
o Exemple : borderRadius: [Link](10.0)
3. border :
o Permet de définir une bordure autour du Container.
o Utilise un objet Border qui peut avoir des bords individuels (haut, bas, gauche,
droite) définis avec des couleurs et des largeurs.
o Exemple :
o border: [Link](color: [Link], width: 2)
4. boxShadow :
o Crée une ou plusieurs ombres portées sur le Container.
o Utilise un objet BoxShadow, qui prend des paramètres comme la couleur, le
rayon de flou, et l'offset de l'ombre.
o Exemple :
o boxShadow: [
o BoxShadow(
o color: [Link](0.3),
o blurRadius: 10.0,
o offset: Offset(5, 5),
o ),
o ]
5. image :
o Permet d'ajouter une image en arrière-plan du Container.
o Utilise un objet DecorationImage où tu peux spécifier l'image et comment
elle doit être ajustée (par exemple, [Link], [Link]).
o Exemple :
o image: DecorationImage(
o image: AssetImage('assets/[Link]'),
o fit: [Link], // L'image couvre toute la surface
o )
6. gradient :
o Applique un dégradé comme couleur de fond.
o Utilise un objet LinearGradient, RadialGradient, ou SweepGradient pour
spécifier le type et les couleurs du dégradé.
o Exemple :
o gradient: LinearGradient(
o colors: [[Link], [Link]],
o begin: [Link],
o end: [Link],
o )
7. shape :
o Définit la forme du Container. Il peut être soit un carré ou un cercle.
o Exemple :
o shape: [Link] // Pour créer un conteneur circulaire
Quand utiliser decoration ?
Personnalisation d'un Container : Si tu veux personnaliser l'apparence d'un
Container de manière avancée (par exemple, ajouter une couleur de fond, des ombres
ou des coins arrondis).
Arrière-plans : Lorsque tu souhaites afficher des images ou des dégradés en arrière-
plan d'un widget.
Création de cartes ou de boutons stylisés : Lors de la conception d'éléments visuels
qui nécessitent des bordures, des ombres ou des coins arrondis.
Création de formes : Si tu veux créer des formes spécifiques comme des cercles, des
rectangles avec coins arrondis, ou d'autres formes personnalisées.
Exemples d'utilisation dans différents scénarios :
1. Bouton avec coins arrondis et ombre :
Container(
decoration: BoxDecoration(
color: [Link],
borderRadius: [Link](30.0),
boxShadow: [
BoxShadow(
color: [Link](0.3),
blurRadius: 5.0,
offset: Offset(2, 2),
),
],
),
child: TextButton(
onPressed: () {},
child: Text('Appuyer'),
),
)
2. Carte avec dégradé et image en arrière-plan :
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [[Link], [Link]],
begin: [Link],
end: [Link],
),
borderRadius: [Link](15.0),
image: DecorationImage(
image: AssetImage('assets/card_background.jpg'),
fit: [Link],
),
),
child: Padding(
padding: const [Link](16.0),
child: Text(
'Carte personnalisée',
style: TextStyle(color: [Link]),
),
),
)
Conclusion :
La propriété decoration est un outil puissant et flexible pour appliquer des styles complexes
aux Container et autres widgets similaires dans Flutter. Elle permet de personnaliser
l'apparence de manière détaillée en jouant avec les couleurs, les ombres, les images et bien
plus encore, ce qui est essentiel pour concevoir des interfaces modernes et attrayantes.