Aller au contenu principal

AsCheckbox

Un composant de case à cocher avec un style personnalisable et une apparence adaptative à la plateforme pour les saisies booléennes.

Import

import 'package:alphasow_ui/alphasow_ui.dart';

Utilisation de Base

bool isChecked = false;

AsCheckbox(
value: isChecked,
onChanged: (value) {
setState(() {
isChecked = value ?? false;
});
},
)

Avec Étiquette

bool acceptTerms = false;

AsCheckbox(
value: acceptTerms,
label: 'J'accepte les termes et conditions',
onChanged: (value) {
setState(() {
acceptTerms = value ?? false;
});
},
)

Case à Cocher Trois États

bool? triState = null; // null = indéterminé, true = coché, false = décoché

AsCheckbox(
value: triState,
tristate: true,
onChanged: (value) {
setState(() {
triState = value;
});
},
)

Case à Cocher Désactivée

AsCheckbox(
value: true,
onChanged: null, // null désactive la case à cocher
label: 'Case à cocher désactivée',
)

Référence API

Propriétés

PropriétéTypeDéfautDescription
valuebool?requisÉtat actuel de la case à cocher
onChangedValueChanged<bool?>?requisAppelé quand l'état de la case à cocher change. null désactive la case
labelString?nullÉtiquette de texte affichée à côté de la case à cocher
tristateboolfalseSi la case à cocher supporte l'état indéterminé
activeColorColor?nullCouleur quand la case à cocher est cochée
checkColorColor?nullCouleur de la coche
focusColorColor?nullCouleur quand la case à cocher a le focus
hoverColorColor?nullCouleur quand la case à cocher est survolée
semanticsLabelString?nullÉtiquette d'accessibilité

Exemples

Liste de Cases à Cocher de Formulaire

class CheckboxForm extends StatefulWidget {
@override
_CheckboxFormState createState() => _CheckboxFormState();
}

class _CheckboxFormState extends State<CheckboxForm> {
Map<String, bool> preferences = {
'notifications': false,
'newsletter': false,
'marketing': false,
};

@override
Widget build(BuildContext context) {
return Column(
children: [
AsCheckbox(
value: preferences['notifications'],
label: 'Activer les notifications',
onChanged: (value) {
setState(() {
preferences['notifications'] = value ?? false;
});
},
),
AsCheckbox(
value: preferences['newsletter'],
label: 'S'abonner à la newsletter',
onChanged: (value) {
setState(() {
preferences['newsletter'] = value ?? false;
});
},
),
AsCheckbox(
value: preferences['marketing'],
label: 'Recevoir les emails marketing',
onChanged: (value) {
setState(() {
preferences['marketing'] = value ?? false;
});
},
),
],
);
}
}

Case à Cocher Tout Sélectionner

class SelectAllCheckbox extends StatefulWidget {
@override
_SelectAllCheckboxState createState() => _SelectAllCheckboxState();
}

class _SelectAllCheckboxState extends State<SelectAllCheckbox> {
List<String> items = ['Item 1', 'Item 2', 'Item 3'];
Set<String> selectedItems = {};

bool? get selectAllValue {
if (selectedItems.isEmpty) return false;
if (selectedItems.length == items.length) return true;
return null; // Indéterminé
}

@override
Widget build(BuildContext context) {
return Column(
children: [
AsCheckbox(
value: selectAllValue,
tristate: true,
label: 'Tout Sélectionner',
onChanged: (value) {
setState(() {
if (value == true) {
selectedItems = Set.from(items);
} else {
selectedItems.clear();
}
});
},
),
Divider(),
...items.map((item) => AsCheckbox(
value: selectedItems.contains(item),
label: item,
onChanged: (value) {
setState(() {
if (value == true) {
selectedItems.add(item);
} else {
selectedItems.remove(item);
}
});
},
)),
],
);
}
}

Couleurs Personnalisées

AsCheckbox(
value: isChecked,
activeColor: Colors.green,
checkColor: Colors.white,
label: 'Case à cocher avec style personnalisé',
onChanged: (value) {
setState(() {
isChecked = value ?? false;
});
},
)

Case à Cocher d'Accord

bool agreedToTerms = false;

Column(
children: [
AsCheckbox(
value: agreedToTerms,
onChanged: (value) {
setState(() {
agreedToTerms = value ?? false;
});
},
label: 'J'ai lu et j'accepte les Conditions de Service',
),
AsButton(
onPressed: agreedToTerms ? () {
// Procéder à l'inscription
} : null,
child: Text('S'inscrire'),
),
],
)

Différences de Plateforme

Material (Android/Web)

  • Utilise Checkbox avec le style Material
  • Effets de vague Material
  • Palette de couleurs Material Design

Cupertino (iOS/macOS)

  • Utilise CupertinoSwitch stylé comme case à cocher
  • Animations de style iOS
  • Suit les directives iOS Human Interface Guidelines

Accessibilité

AsCheckbox inclut automatiquement :

  • Rôles sémantiques appropriés pour les lecteurs d'écran
  • Support de navigation clavier
  • Indicateurs de focus
  • Annonces d'état

Voir Aussi