import 'package:flutter/material.dart'; import 'package:flutter_credit_card/credit_card_brand.dart'; import 'package:flutter_credit_card/flutter_credit_card.dart'; import 'package:flutter_stripe/flutter_stripe.dart'; void main() => runApp(CreditView()); class CreditView extends StatefulWidget { @override State createState() { return CreditViewState(); } } class CreditViewState extends State { String cardNumber = ''; String expiryDate = ''; String cardHolderName = ''; String cvvCode = ''; bool isCvvFocused = false; bool useGlassMorphism = true; bool useBackgroundImage = false; OutlineInputBorder? border; final GlobalKey formKey = GlobalKey(); @override void initState() { border = OutlineInputBorder( borderSide: BorderSide( color: Colors.grey.withOpacity(0.7), width: 2.0, ), ); super.initState(); } @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Credit Card View Demo', debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( resizeToAvoidBottomInset: false, body: Container( decoration: const BoxDecoration( color: Colors.black, ), child: SafeArea( child: Column( children: [ const SizedBox( height: 30, ), CreditCardWidget( glassmorphismConfig: useGlassMorphism ? Glassmorphism.defaultConfig() : null, cardNumber: cardNumber, expiryDate: expiryDate, cardHolderName: cardHolderName, cvvCode: cvvCode, bankName: 'Axis Bank', frontCardBorder: !useGlassMorphism ? Border.all(color: Colors.grey) : null, backCardBorder: !useGlassMorphism ? Border.all(color: Colors.grey) : null, showBackView: isCvvFocused, obscureCardNumber: true, obscureCardCvv: true, isHolderNameVisible: true, backgroundImage: useBackgroundImage ? 'assets/card_bg.png' : null, isSwipeGestureEnabled: true, onCreditCardWidgetChange: (CreditCardBrand creditCardBrand) {}, customCardTypeIcons: [ CustomCardTypeIcon( cardType: CardType.mastercard, cardImage: Image.asset( 'assets/mastercard.png', height: 48, width: 48, ), ), ], ), Expanded( child: SingleChildScrollView( child: Column( children: [ CreditCardForm( formKey: formKey, obscureCvv: true, obscureNumber: true, cardNumber: cardNumber, cvvCode: cvvCode, isHolderNameVisible: true, isCardNumberVisible: true, isExpiryDateVisible: true, cardHolderName: cardHolderName, expiryDate: expiryDate, themeColor: Colors.blue, textColor: Colors.white, cardNumberDecoration: InputDecoration( labelText: 'Number', hintText: 'XXXX XXXX XXXX XXXX', hintStyle: const TextStyle(color: Colors.white), labelStyle: const TextStyle(color: Colors.white), focusedBorder: border, enabledBorder: border, ), expiryDateDecoration: InputDecoration( hintStyle: const TextStyle(color: Colors.white), labelStyle: const TextStyle(color: Colors.white), focusedBorder: border, enabledBorder: border, labelText: 'Expired Date', hintText: 'XX/XX', ), cvvCodeDecoration: InputDecoration( hintStyle: const TextStyle(color: Colors.white), labelStyle: const TextStyle(color: Colors.white), focusedBorder: border, enabledBorder: border, labelText: 'CVV', hintText: 'XXX', ), cardHolderDecoration: InputDecoration( hintStyle: const TextStyle(color: Colors.white), labelStyle: const TextStyle(color: Colors.white), focusedBorder: border, enabledBorder: border, labelText: 'Card Holder', ), onCreditCardModelChange: onCreditCardModelChange, ), const SizedBox( height: 20, ), GestureDetector( onTap: _onValidate, child: Container( margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), padding: const EdgeInsets.symmetric(vertical: 15), width: double.infinity, alignment: Alignment.center, child: const Text( 'Validate', style: TextStyle( color: Colors.black, fontFamily: 'halter', fontSize: 14, package: 'flutter_credit_card', ), ), ), ), ElevatedButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.red), ), onPressed: () {}, child: Text('Complete Setup'), ), ], ), ), ), ], ), ), ), ), ); } void _onValidate() { if (formKey.currentState!.validate()) { print('valid!'); } else { print('invalid!'); } } void onCreditCardModelChange(CreditCardModel? creditCardModel) { setState(() { cardNumber = creditCardModel!.cardNumber; expiryDate = creditCardModel.expiryDate; cardHolderName = creditCardModel.cardHolderName; cvvCode = creditCardModel.cvvCode; isCvvFocused = creditCardModel.isCvvFocused; }); } }