Aller au contenu principal

AsIconButton

Un composant de bouton basé sur des icônes qui fournit différents styles incluant rempli, contour, fantôme, et plus avec un style adaptatif de plateforme.

Import​

import 'package:alphasow_ui/alphasow_ui.dart';

Utilisation de Base​

AsIconButton(
icon: Icons.favorite,
onPressed: () {
print('Bouton icône pressé !');
},
)

Styles de Bouton​

Bouton Icône Standard (Par Défaut)​

AsIconButton(
icon: Icons.home,
onPressed: () {},
)

Bouton Icône Rempli​

AsIconButton.filled(
icon: Icons.favorite,
onPressed: () {},
)

Bouton Icône Contour​

AsIconButton.outlined(
icon: Icons.share,
onPressed: () {},
)

Bouton Icône Fantôme​

AsIconButton.ghost(
icon: Icons.settings,
onPressed: () {},
)

Couleurs Personnalisées​

AsIconButton(
icon: Icons.star,
backgroundColor: Colors.amber,
iconColor: Colors.white,
onPressed: () {},
)

Tailles​

// Petit bouton icône
AsIconButton(
icon: Icons.add,
size: AsIconButtonSize.small,
onPressed: () {},
)

// Bouton icône moyen (défaut)
AsIconButton(
icon: Icons.add,
size: AsIconButtonSize.medium,
onPressed: () {},
)

// Grand bouton icône
AsIconButton(
icon: Icons.add,
size: AsIconButtonSize.large,
onPressed: () {},
)

État Désactivé​

AsIconButton(
icon: Icons.delete,
onPressed: null, // null désactive le bouton
)

Référence API​

Propriétés​

PropriétéTypeDéfautDescription
iconIconDatarequisL'icône à afficher
onPressedVoidCallback?requisAppelé quand le bouton est pressé. null désactive le bouton
sizeAsIconButtonSize?AsIconButtonSize.mediumTaille du bouton
backgroundColorColor?nullCouleur d'arrière-plan personnalisée
iconColorColor?nullCouleur d'icône personnalisée
borderRadiusBorderRadius?nullRayon de bordure personnalisé
tooltipString?nullMessage d'info-bulle
semanticsLabelString?nullÉtiquette d'accessibilité

AsIconButtonSize​

  • AsIconButtonSize.small - 32x32 points
  • AsIconButtonSize.medium - 40x40 points (défaut)
  • AsIconButtonSize.large - 48x48 points

Exemples​

Avec Info-bulle​

AsIconButton(
icon: Icons.info,
tooltip: 'Information',
onPressed: () {},
)

Rayon de Bordure Personnalisé​

AsIconButton.filled(
icon: Icons.play_arrow,
borderRadius: BorderRadius.circular(8),
onPressed: () {},
)

État de Chargement​

class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
bool _isLoading = false;

@override
Widget build(BuildContext context) {
return AsIconButton(
icon: _isLoading ? Icons.hourglass_empty : Icons.refresh,
onPressed: _isLoading ? null : () async {
setState(() => _isLoading = true);
await Future.delayed(const Duration(seconds: 2));
setState(() => _isLoading = false);
},
);
}
}

Différences de Plateforme​

Material (Android/Web)​

  • Utilise IconButton avec style Material
  • Support des effets de vague Material
  • Élévation Material pour les variantes remplies

Cupertino (iOS/macOS)​

  • Utilise CupertinoButton avec icône
  • Animation d'état pressé de style iOS
  • Suit les directives iOS Human Interface Guidelines

Voir Aussi​