Notification Widget

Il widget CardContent è progettato per mostrare contenuti in una card personalizzabile. Accetta come parametro un oggetto CardViewModel che consente di configurare diversi aspetti del layout, del contenuto e del comportamento della card.

Costruttore

Il costruttore di CardContent è definito come segue:

CardContent({
    required CardViewModel cardViewModel,
});

Parametri:

  • cardViewModel: un’istanza di CardViewModel che specifica le configurazioni della card, tra cui il contenuto principale, l’intestazione, la sezione inferiore e l’overlay.

Questa tipologia è simile alla Card Extended, la differenza è nell’utilizzo in maniera diversa delle varie configurazioni disponibili.

Varianti di utilizzo

Variante 1

Questa variante mostra una card di notifica con un bottone.

../../../_images/notification1.png
CardViewModel(
          config: CardConfig(layoutBuilder: EvaCardExtendedLayoutBuilder(leftContentPadding: 10), onTap: (CardViewModel item) {}),
          contentConfig: CardContentConfig(
              customWidget: buildDatesNotification(
                  colorScheme: colorScheme,
                  overlayItemWidget: buildOverlayItem(
                      colorScheme,
                      OverlayItemConfig(
                        isChecked: true,
                        orientation: EvaCardOverlayItemContentDoubleOrientation.horizontal,
                        overlayItemSize: OverlayItemSize.normal,
                        startDate: DateTime(2024, 2, 3),
                        endDate: DateTime(2024, 2, 5),
                      )),
                  title: IconTextViewModel(text: "Buone Notizie!"),
                  description1: IconTextViewModel(text: "Pierpaolo"),
                  description2: IconTextViewModel(text: " ha accettato la tua richiesta"))),
          bottomConfig:
              CardBottomConfig(buttons: CardBottomButtons(buttons: [ButtonViewModel(label: 'Ok Grazie', type: ButtonType.standard, action: () {})])),
        )

Variante 2

Questa variante mostra una card di notifica con due bottoni.

../../../_images/notification2.png
CardContent(
        cardViewModel: CardViewModel(
          config: CardConfig(layoutBuilder: EvaCardExtendedLayoutBuilder(leftContentPadding: 10), onTap: (CardViewModel item) {}),
          contentConfig: CardContentConfig(
              customWidget: buildDatesNotification(
                  colorScheme: colorScheme,
                  overlayItemWidget: buildOverlayItem(
                      colorScheme,
                      OverlayItemConfig(
                        isChecked: false,
                        orientation: EvaCardOverlayItemContentDoubleOrientation.horizontal,
                        overlayItemSize: OverlayItemSize.normal,
                        startDate: DateTime(2024, 2, 3),
                        endDate: DateTime(2024, 2, 5),
                      )),
                  title: IconTextViewModel(text: "Buone Notizie!"),
                  description1: IconTextViewModel(text: "Pierpaolo"),
                  description2: IconTextViewModel(text: " ha accettato la tua richiesta"))),
          bottomConfig: CardBottomConfig(
              buttons: CardBottomButtons(buttons: [
            ButtonViewModel(label: 'Dettaglio', type: ButtonType.outlined, action: () {}),
            ButtonViewModel(label: 'Ok Grazie', type: ButtonType.standard, action: () {})
          ])),
        ),
      )

Variante 3

Questa variante mostra una card di notifica con tre bottoni.

../../../_images/notification3.png
CardContent(
        cardViewModel: CardViewModel(
          config: CardConfig(layoutBuilder: EvaCardExtendedLayoutBuilder(leftContentPadding: 10), onTap: (CardViewModel item) {}),
          contentConfig: CardContentConfig(
              customWidget: buildDatesNotification(
                  colorScheme: colorScheme,
                  overlayItemWidget: buildOverlayItem(
                      colorScheme,
                      OverlayItemConfig(
                        isChecked: true,
                        orientation: EvaCardOverlayItemContentDoubleOrientation.horizontal,
                        overlayItemSize: OverlayItemSize.normal,
                        startDate: DateTime(2024, 2, 3),
                        endDate: DateTime(2024, 2, 5),
                      )),
                  title: IconTextViewModel(text: "Buone Notizie!"),
                  description1: IconTextViewModel(text: "Pierpaolo"),
                  description2: IconTextViewModel(text: " ha accettato la tua richiesta"))),
          bottomConfig: CardBottomConfig(
              buttons: CardBottomButtons(buttons: [
            ButtonViewModel(label: 'Dettaglio', type: ButtonType.outlined, action: () {}),
            ButtonViewModel(label: 'Messaggia', type: ButtonType.outlined, action: () {}),
            ButtonViewModel(label: 'Ok Grazie', type: ButtonType.standard, action: () {})
          ])),
        ),
      )

Variante 4

Questa variante mostra una card di notifica con sfondo senza overlay e senza bottoni.

../../../_images/notification4.png
CardContent(
      cardViewModel: CardViewModel(
        config: CardConfig(
            backgroundColor: Colors.green.shade50, layoutBuilder: EvaCardExtendedLayoutBuilder(leftContentPadding: 10), onTap: (CardViewModel item) {}),
        contentConfig: CardContentConfig(
            customWidget: buildDatesNotification(
                colorScheme: colorScheme,
                isContentCentered: true,
                title: IconTextViewModel(text: "Buone Notizie!"),
                description1: IconTextViewModel(text: "Pierpaolo"),
                description2: IconTextViewModel(text: " ha accettato la tua richiesta"))),
      ),
    )

Variante 5

Questa variante mostra una card di notifica con tre bottoni, il layout è relativo ad un viaggio.

../../../_images/notification5.png
CardContent(
        cardViewModel: CardViewModel(
          config: CardConfig(
              backgroundColor: Colors.green.shade50, layoutBuilder: EvaCardExtendedLayoutBuilder(leftContentPadding: 10), onTap: (CardViewModel item) {}),
          contentConfig: CardContentConfig(
              customWidget: buildTravelNotification(
            colorScheme: colorScheme,
            title: IconTextViewModel(text: "Buone Notizie!"),
            description1: IconTextViewModel(text: "Francesca"),
            description2: IconTextViewModel(text: " vuole aggiungersi al tuo viaggio"),
            from: IconTextViewModel(text: "Fiumicino RM"),
            to: IconTextViewModel(text: "Roma RM"),
            date: IconTextViewModel(text: "Mer 5 ottobre"),
          )),
          bottomConfig: CardBottomConfig(
              buttons: CardBottomButtons(buttons: [
            ButtonViewModel(label: 'Rifiuta', type: ButtonType.outlined, action: () {}),
            ButtonViewModel(label: 'Approva', type: ButtonType.standard, action: () {}),
            ButtonViewModel(label: 'Dettagli', type: ButtonType.standard, action: () {})
          ])),
        ),
      )