mobileCard static method

Widget mobileCard(
  1. BuildContext context, {
  2. required String title,
  3. required List<UAdminField> fields,
  4. Widget? leading,
  5. IconData? icon,
  6. String? subtitle,
  7. Widget? badge,
  8. Widget? trailing,
  9. VoidCallback? onTap,
})

Implementation

static Widget mobileCard(
  BuildContext context, {
  required String title,
  required List<UAdminField> fields,
  Widget? leading,
  IconData? icon,
  String? subtitle,
  Widget? badge,
  Widget? trailing,
  VoidCallback? onTap,
}) {
  final ColorScheme scheme = Theme.of(context).colorScheme;
  final Widget card = UContainer(
    margin: const EdgeInsets.symmetric(vertical: 6, horizontal: 2),
    padding: const EdgeInsets.all(14),
    radius: 16,
    color: scheme.surface,
    border: Border.all(color: scheme.outlineVariant.withValues(alpha: 0.5)),
    boxShadow: <BoxShadow>[BoxShadow(color: scheme.shadow.withValues(alpha: 0.06), blurRadius: 12, offset: const Offset(0, 4))],
    child: UColumn(
      spacing: 0,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        URow(
          spacing: 12,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            leading ?? leadingIcon(context, icon ?? Icons.circle_outlined),
            Expanded(
              child: UColumn(
                spacing: 2,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  UTextTitleSmall(title, maxLines: 2, overflow: TextOverflow.ellipsis, fontWeight: FontWeight.w700),
                  if (subtitle.isNotNullOrEmpty()) UTextBodySmall(subtitle!, color: scheme.onSurfaceVariant, maxLines: 1, overflow: TextOverflow.ellipsis),
                ],
              ),
            ),
            ?badge,
            ?trailing,
          ],
        ),
        if (fields.isNotEmpty) ...<Widget>[
          Padding(
            padding: const EdgeInsets.symmetric(vertical: 12),
            child: Divider(height: 1, color: scheme.outlineVariant.withValues(alpha: 0.4)),
          ),
          ...fields.mapIndexed(
            (int idx, UAdminField f) => Padding(
              padding: EdgeInsets.only(top: idx == 0 ? 0 : 10),
              child: _fieldRow(context, f),
            ),
          ),
        ],
      ],
    ),
  );
  return onTap == null ? card : card.onTapInk(onTap);
}