CardViewModel

Il CardViewModel è definito come segue:

@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.

@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.

@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.

@freezed
class CardHeaderConfig with _$CardHeaderConfig {
  factory CardHeaderConfig({
    final String? imageUrl,
    final double? imageHeight,
    final Widget? topRightWidget,
    final List<Widget>? 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.

@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.

@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.

@freezed
class CardBottomButtons with _$CardBottomButtons {
  factory CardBottomButtons({
    required final List<ButtonViewModel> buttons,
  }) = _CardBottomButtons;
}

Proprietà:

  • buttons: lista di pulsanti.