Skip to content
Snippets Groups Projects
credit_card_mini.dart 7.57 KiB
Newer Older
vjrj's avatar
vjrj committed
import 'package:easy_localization/easy_localization.dart';
vjrj's avatar
vjrj committed
import 'package:flutter/material.dart';

vjrj's avatar
vjrj committed
import '../../../data/models/cesium_card.dart';
vjrj's avatar
vjrj committed
import '../../../data/models/credit_card_theme_selector.dart';
vjrj's avatar
vjrj committed
import '../../../data/models/credit_card_themes.dart';
import '../../../shared_prefs_helper.dart';
vjrj's avatar
vjrj committed
import '../../ui_helpers.dart';
vjrj's avatar
vjrj committed
import 'card_name_editable.dart';
vjrj's avatar
vjrj committed
import 'card_text_style.dart';

class CreditCardMini extends StatelessWidget {
  const CreditCardMini(
      {super.key,
      required this.card,
      required this.cardIndex,
      required this.settingsVisible});
vjrj's avatar
vjrj committed

vjrj's avatar
vjrj committed
  final CesiumCard card;
  final bool settingsVisible;
  final int cardIndex;
vjrj's avatar
vjrj committed

  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))),
vjrj's avatar
vjrj committed
  @override
  Widget build(BuildContext context) {
    const double cardRadius = 10.0;
    final bool bigDevice = bigScreen(context);
vjrj's avatar
vjrj committed
    final double cardInternalElPadding = bigDevice ? 5 : 6.0;
    return Padding(
        padding: const EdgeInsets.all(10),
        child: GestureDetector(
vjrj's avatar
vjrj committed
            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>[
                              card.theme.primaryColor,
                              card.theme.secondaryColor
                            ],
                        child: Padding(
                          padding: const EdgeInsets.all(10),
                          child: Stack(children: <Widget>[
                            if (inDevelopment)
                              Positioned(
                                top: 30,
                                right: -10,
                                child: Visibility(
                                  visible: settingsVisible,
                                  child: FloatingActionButton(
                                    backgroundColor: Colors.transparent,
                                    elevation: 0,
                                    onPressed: () {
                                      SharedPreferencesHelper()
                                          .selectCurrentWalletIndex(0);
                                      SharedPreferencesHelper()
                                          .removeCesiumCard(cardIndex);
                                    },
                                    child: const Icon(Icons.delete,
                                        color: Colors.white),
                                  ),
                                ),
                              ),
                            Positioned(
                              top: -10,
                              right: -10,
                              child: Visibility(
                                visible: settingsVisible,
                                child: FloatingActionButton(
                                  backgroundColor: Colors.transparent,
                                  elevation: 0,
                                  onPressed: () => _showThemeSelector(context),
                                  child: const Icon(Icons.settings,
                                      color: Colors.white),
                                ),
                              ),
                            ),
                            Padding(
                                padding:
                                    const EdgeInsets.fromLTRB(120, 10, 0, 0),
                                child: Opacity(
                                  opacity: 0.2,
                                  child: Image.asset(
                                      'assets/img/gbrevedot_alt.png',
                                      width: 100,
                                      height: 100),
                                )),
vjrj's avatar
vjrj committed
                            GestureDetector(
                                onTap: () => onCardTap(context),
                                child: Column(
                                    crossAxisAlignment:
                                        CrossAxisAlignment.start,
                                    // mainAxisAlignment: MainAxisAlignment.start,
                                    children: <Widget>[
                                      if (card.name.isNotEmpty)
                                        Padding(
                                            padding: EdgeInsets.symmetric(
                                                horizontal:
                                                    cardInternalElPadding,
                                                vertical:
                                                    cardInternalElPadding),
                                            child: Row(children: <Widget>[
                                              Expanded(
                                                  child: CardNameText(
                                                      currentText: card.name,
                                                      onTap: () {})),
                                            ])),
                                      Padding(
                                          padding: EdgeInsets.symmetric(
                                              horizontal: cardInternalElPadding,
                                              vertical: cardInternalElPadding),
                                          child: Row(children: <Widget>[
                                            FittedBox(
                                                fit: BoxFit.scaleDown,
                                                child: Text(
                                                  '${card.pubKey.substring(0, 4)} ${card.pubKey.substring(4, 8)}',
                                                  style: cardTextStyle(context,
                                                      fontSize: 16),
                                                )),
                                          ])),
                                      if (bigDevice)
                                        const SizedBox(height: 6.0),
                                      const SizedBox(height: 8.0),
                                    ])),
                          ]),
                        ))))));
vjrj's avatar
vjrj committed
  }
vjrj's avatar
vjrj committed

  void onCardTap(BuildContext context) {
    SharedPreferencesHelper().selectCurrentWallet(card);
    Navigator.pop(context);
  }
vjrj's avatar
vjrj committed
}