Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 68 additions & 13 deletions lib/src/credit_card_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class CreditCardWidget extends StatefulWidget {
required this.showBackView,
required this.onCreditCardWidgetChange,
this.bankName,
this.cardStatus,
this.animationDuration = AppConstants.defaultAnimDuration,
this.height,
this.width,
Expand Down Expand Up @@ -84,6 +85,9 @@ class CreditCardWidget extends StatefulWidget {
/// A string indicating name of the bank.
final String? bankName;

/// A string indicating status of the card (Platinum, Gold, etc.)
final String? cardStatus;

/// Duration for flip animation. Defaults to 500 milliseconds.
final Duration animationDuration;

Expand Down Expand Up @@ -465,6 +469,69 @@ class _CreditCardWidgetState extends State<CreditCardWidget>
);
}

Widget _frontCardTopRow(TextStyle defaultTextStyle) {
Padding? cardStylePadding;
Padding? bankNamePadding;

if (widget.bankName.isNotNullAndNotEmpty) {
bankNamePadding = _frontCardBankNameWidget(defaultTextStyle);
}

if (widget.cardStatus.isNotNullAndNotEmpty) {
cardStylePadding = _frontCardStatusWidget(defaultTextStyle);
}

if (cardStylePadding != null && bankNamePadding != null) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
cardStylePadding,
bankNamePadding,
],
);
}

if (cardStylePadding != null) {
return Align(
alignment: Alignment.topLeft,
child: cardStylePadding,
);
}

if (bankNamePadding != null) {
return Align(
alignment: Alignment.topRight,
child: bankNamePadding,
);
}

return const SizedBox();
}

Padding _frontCardStatusWidget(TextStyle defaultTextStyle) {
return Padding(
padding: const EdgeInsets.only(left: 16, top: 16),
child: Text(
widget.cardStatus!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: defaultTextStyle,
),
);
}

Padding _frontCardBankNameWidget(TextStyle defaultTextStyle) {
return Padding(
padding: const EdgeInsets.only(right: 16, top: 16),
child: Text(
widget.bankName!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: defaultTextStyle,
),
);
}

Widget _frontCardBackground({
required String number,
required TextStyle defaultTextStyle,
Expand All @@ -484,19 +551,7 @@ class _CreditCardWidgetState extends State<CreditCardWidget>
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
if (widget.bankName.isNotNullAndNotEmpty)
Align(
alignment: Alignment.topRight,
child: Padding(
padding: const EdgeInsets.only(right: 16, top: 16),
child: Text(
widget.bankName!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: defaultTextStyle,
),
),
),
_frontCardTopRow(defaultTextStyle),
Expanded(
flex: widget.isChipVisible ? 1 : 0,
child: Row(
Expand Down