Skip to content
Snippets Groups Projects
credit_card.dart 6.51 KiB
Newer Older
vjrj's avatar
vjrj committed
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
vjrj's avatar
vjrj committed
import 'package:flutter_dotenv/flutter_dotenv.dart';
vjrj's avatar
vjrj committed
import 'package:flutter_svg/svg.dart';
vjrj's avatar
vjrj committed

import '../../../shared_prefs_helper.dart';
vjrj's avatar
vjrj committed
import '../../tutorial_keys.dart';
vjrj's avatar
vjrj committed
import '../../ui_helpers.dart';
import 'card_name_editable.dart';
vjrj's avatar
vjrj committed
import 'card_text_style.dart';
vjrj's avatar
vjrj committed

class CreditCard extends StatelessWidget {
vjrj's avatar
vjrj committed
  CreditCard({super.key});

  final String publicKey = SharedPreferencesHelper().getPubKey();
  final String cardName = SharedPreferencesHelper().getName();
vjrj's avatar
vjrj committed
  @override
  Widget build(BuildContext context) {
vjrj's avatar
vjrj committed
    const double cardRadius = 10.0;
vjrj's avatar
vjrj committed
    final bool bigDevice = bigScreen(context);
    final double cardPadding = bigDevice ? 26.0 : 16.0;
vjrj's avatar
vjrj committed
    final String pubKey = SharedPreferencesHelper().getPubKey();
vjrj's avatar
vjrj committed
    return Card(
vjrj's avatar
vjrj committed
        elevation: 8.0,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(cardRadius),
vjrj's avatar
vjrj committed
        ),
vjrj's avatar
vjrj committed
        child: AspectRatio(
vjrj's avatar
vjrj committed
            aspectRatio: cardAspectRatio, // Credit cart aspect ratio
vjrj's avatar
vjrj committed
            child: Container(
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(cardRadius),
                boxShadow: <BoxShadow>[
                  BoxShadow(
                    color: Colors.grey[400]!,
                    blurRadius: 10.0,
                    spreadRadius: 1.0,
                  )
                ],
vjrj's avatar
vjrj committed
                gradient: LinearGradient(
vjrj's avatar
vjrj committed
                  begin: Alignment.bottomLeft,
                  end: Alignment.topRight,
                  colors: <Color>[
                    SharedPreferencesHelper().getTheme().primaryColor,
                    SharedPreferencesHelper().getTheme().secondaryColor
vjrj's avatar
vjrj committed
                  ],
vjrj's avatar
vjrj committed
                ),
              ),
vjrj's avatar
vjrj committed
              child: Stack(children: <Widget>[
                Padding(
                    padding: const EdgeInsets.fromLTRB(160, 10, 0, 0),
                    child: Opacity(
                        opacity: 0.1,
                        child: Image.asset('assets/img/gbrevedot_alt.png'))),
vjrj's avatar
vjrj committed
                Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[
                      Padding(
                        padding: EdgeInsets.all(cardPadding),
                        child: FittedBox(
                            fit: BoxFit.scaleDown,
                            child: Text(
                              dotenv.env['CARD_TEXT'] != null &&
                                      dotenv.env['CARD_TEXT'] != 'Ğ1 Wallet'
                                  ? dotenv.env['CARD_TEXT']!
                                  : tr('g1_wallet'),
vjrj's avatar
vjrj committed
                              style: TextStyle(
                                color: Colors.white,
                                fontSize:
                                    MediaQuery.of(context).size.width * 0.07,
                                fontWeight: FontWeight.bold,
                              ),
                            )),
                      ),
                      Padding(
                          padding:
                              EdgeInsets.symmetric(horizontal: cardPadding),
                          child: Row(children: <Widget>[
                            GestureDetector(
                                onTap: () {
                                  showQrDialog(
                                      context: context, publicKey: pubKey);
                                },
                                child: SvgPicture.asset(
                                  width: MediaQuery.of(context).size.width <
                                          smallScreenWidth
                                      ? 25
                                      : 40,
                                  'assets/img/chip.svg',
                                )),
                            const SizedBox(width: 10.0),
                            Expanded(
                                child: CardNameEditable(
                              defValue: SharedPreferencesHelper().isG1nkgoCard()
                                  ? tr('your_name_here')
                                  : '',
                            )),
vjrj's avatar
vjrj committed
                      const SizedBox(height: 6.0),
vjrj's avatar
vjrj committed
                      Padding(
                          padding:
                              EdgeInsets.symmetric(horizontal: cardPadding),
                          child: Row(children: <Widget>[
                            GestureDetector(
vjrj's avatar
vjrj committed
                                onTap: () => showQrDialog(
                                    context: context, publicKey: pubKey),
vjrj's avatar
vjrj committed
                                child: FittedBox(
vjrj's avatar
vjrj committed
                                    key: creditCardPubKey,
vjrj's avatar
vjrj committed
                                    fit: BoxFit.scaleDown,
                                    child: Text(
                                      '${pubKey.substring(0, 4)} ${pubKey.substring(4, 8)}',
                                      style: cardTextStyle(context),
vjrj's avatar
vjrj committed
                                    ))),
                            GestureDetector(
                                onTap: () => showTooltip(
                                    context, '', tr('keys_tooltip')),
                                child: FittedBox(
                                    fit: BoxFit.scaleDown,
                                    child: Text(' **** ****',
                                        style: cardTextStyle(context)))),
vjrj's avatar
vjrj committed
                          ])),
vjrj's avatar
vjrj committed
                      if (bigDevice) const SizedBox(height: 6.0),
vjrj's avatar
vjrj committed
                      if (bigDevice)
                        Padding(
                          padding:
                              EdgeInsets.symmetric(horizontal: cardPadding),
                          child: GestureDetector(
                            onTap: () => showTooltip(
                                context, '', tr('card_validity_tooltip')),
                            child: Text(
                              tr('card_validity'),
                              style: TextStyle(
                                decoration: TextDecoration.underline,
                                color: Colors.white.withOpacity(0.8),
                                fontSize: 14.0,
                              ),
vjrj's avatar
vjrj committed
                            ),
vjrj's avatar
vjrj committed
                          ),
vjrj's avatar
vjrj committed
                      const SizedBox(height: 18.0),
                    ]),
vjrj's avatar
vjrj committed
}