Skip to content
Snippets Groups Projects
Forked from vjrj / ginkgo
710 commits behind the upstream repository.
credit_card_mini.dart 7.65 KiB
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

import '../../../data/models/cesium_card.dart';
import '../../../data/models/credit_card_theme_selector.dart';
import '../../../data/models/credit_card_themes.dart';
import '../../../shared_prefs_helper.dart';
import '../../logger.dart';
import '../../ui_helpers.dart';
import 'card_name_editable.dart';
import 'card_text_style.dart';

class CreditCardMini extends StatelessWidget {
  const CreditCardMini(
      {super.key,
      required this.card,
      required this.cardIndex,
      required this.settingsVisible});

  final CesiumCard card;
  final bool settingsVisible;
  final int cardIndex;

  void _showThemeSelector(BuildContext context) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text(tr('card_theme_select')),
          content: SizedBox(
              width: double.maxFinite,
              child: CardThemeSelector(
                  card: card,
                  onTap: (CreditCardTheme theme) =>
                      SharedPreferencesHelper().setTheme(theme: theme))),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    const double cardRadius = 10.0;
    final bool bigDevice = bigScreen(context);
    final double cardInternalElPadding = bigDevice ? 5 : 6.0;
    return Padding(
        padding: const EdgeInsets.all(10),
        child: GestureDetector(
            onTap: () => onCardTap(context),
            child: Card(
                elevation: 8.0,
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(cardRadius),
                ),
                child: AspectRatio(
                    aspectRatio: cardAspectRatio, // Credit cart aspect ratio
                    child: Container(
                        decoration: BoxDecoration(
                          borderRadius: BorderRadius.circular(cardRadius),
                          boxShadow: <BoxShadow>[
                            BoxShadow(
                              color: Colors.grey[400]!,
                              blurRadius: 3.0,
                              spreadRadius: 1.0,
                            )
                          ],
                          gradient: LinearGradient(
                            begin: Alignment.bottomLeft,
                            end: Alignment.topRight,
                            colors: <Color>[