mirror of
https://github.com/SoPat712/RUSwipeShare.git
synced 2025-08-21 10:58:47 -04:00
192 lines
7.3 KiB
Dart
192 lines
7.3 KiB
Dart
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<StatefulWidget> createState() {
|
|
return CreditViewState();
|
|
}
|
|
}
|
|
|
|
class CreditViewState extends State<CreditView> {
|
|
String cardNumber = '';
|
|
String expiryDate = '';
|
|
String cardHolderName = '';
|
|
String cvvCode = '';
|
|
bool isCvvFocused = false;
|
|
bool useGlassMorphism = true;
|
|
bool useBackgroundImage = false;
|
|
OutlineInputBorder? border;
|
|
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
|
|
|
@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: <Widget>[
|
|
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>[
|
|
CustomCardTypeIcon(
|
|
cardType: CardType.mastercard,
|
|
cardImage: Image.asset(
|
|
'assets/mastercard.png',
|
|
height: 48,
|
|
width: 48,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
Expanded(
|
|
child: SingleChildScrollView(
|
|
child: Column(
|
|
children: <Widget>[
|
|
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<Color>(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;
|
|
});
|
|
}
|
|
}
|