CardViewModel ============= Il ``CardViewModel`` è definito come segue: .. code-block:: dart @freezed class CardViewModel with _$CardViewModel { factory CardViewModel({ required final CardContentConfig contentConfig, final CardHeaderConfig? headerConfig, final CardBottomConfig? bottomConfig, final OverlayItemConfig? overlayConfig, required final CardConfig config, }) = _CardViewModel; } **Proprietà**: - **contentConfig**: imposta il contenuto principale della card (titolo, descrizione, ecc.). - **headerConfig**: configura l'intestazione della card (immagine, widget superiori, ecc.). - **bottomConfig**: imposta i contenuti della sezione inferiore (barra di progresso, pulsanti, ecc.). - **overlayConfig**: configura l'overlay item (icone, data, ecc.). - **config**: contiene le impostazioni generali della card, come larghezza, altezza e callback per il back. Dettagli delle configurazioni ----------------------------- ### CardConfig Definisce le impostazioni generali della card. .. code-block:: dart @freezed class CardConfig with _$CardConfig { factory CardConfig({ final double? width, final double? height, final Color? backgroundColor, required final EvaCardLayoutBuilder layoutBuilder, final Function(CardViewModel item)? onTap }) = _CardConfig; } **Proprietà**: - **width**, **height**: dimensioni della card. - **backgroundColor**: colore di sfondo della card. - **layoutBuilder**: tipo di layoutBuilder associato alla card. - **onTap**: callback per l'evento di tap sulla card. ### CardContentConfig Configura il contenuto principale della card. .. code-block:: dart @freezed class CardContentConfig with _$CardContentConfig { factory CardContentConfig({ final IconTextViewModel? title, final IconTextViewModel? description, final IconTextViewModel? subDescription, final Widget? customWidget, }) = _CardContentConfig; } **Proprietà**: - **title**, **description**, **subDescription**: elementi di testo e icone per il contenuto. - **customWidget**: widget personalizzato aggiunto al contenuto. ### CardHeaderConfig Configura l'intestazione della card. .. code-block:: dart @freezed class CardHeaderConfig with _$CardHeaderConfig { factory CardHeaderConfig({ final String? imageUrl, final double? imageHeight, final Widget? topRightWidget, final List? bottomRightWidgets, }) = _CardHeaderConfig; } **Proprietà**: - **imageUrl**: URL dell'immagine nel'header. - **imageHeight**: altezza dell'immagine. - **topRightWidget**: widget in alto a destra. - **bottomRightWidgets**: lista di widget in basso a destra. ### CardBottomConfig Configura la parte inferiore della card. .. code-block:: dart @freezed class CardBottomConfig with _$CardBottomConfig { factory CardBottomConfig({ final CardBottomProgress? progress, final CardBottomButtons? buttons, final Widget? customWidget, }) = _CardBottomConfig; } **Proprietà**: - **progress**: progress bar. - **buttons**: buttons nella parte inferiore della card. - **customWidget**: widget personalizzato. ### CardBottomProgress Configura la progress bar. .. code-block:: dart @freezed class CardBottomProgress with _$CardBottomProgress { factory CardBottomProgress({ required final double progressValue, final Color? progressBackgroundColor, final Color? progressColor, }) = _CardBottomProgress; } **Proprietà**: - **progressValue**: valore del progress (da 0.0 a 1.0). - **progressBackgroundColor** e **``progressColor``**: colori della progress bar. ### CardBottomButtons Definisce i pulsanti nella sezione inferiore. .. code-block:: dart @freezed class CardBottomButtons with _$CardBottomButtons { factory CardBottomButtons({ required final List buttons, }) = _CardBottomButtons; } **Proprietà**: - **buttons**: lista di pulsanti.