Skip to content

Commit dd7ac38

Browse files
Sahil Totalavatsaltanna-simformsolutions
Sahil Totala
authored andcommitted
feat: ✨Added card holder text capitalization feasibility
1 parent d8e2c0d commit dd7ac38

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

Diff for: CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
- Fixed Gyroscope initialization issue [#173](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/issues/173).
55
- Fixed Namespace Not Found issue [#176](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/issues/176).
66
- Fixed Gradle issues [#181](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/pull/181).
7+
- Added `isCardHolderNameUpperCase` to make card holder text field always accept uppercase [#174](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/issues/174).
8+
- Added support for 'mir' cards [#159](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/pull/159).
79

810
# [4.0.1](https://github.com/SimformSolutionsPvtLtd/flutter_credit_card/tree/4.0.1)
911

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ import 'package:flutter_credit_card/flutter_credit_card.dart';
211211
expiryDateValidator: (String? expiryDate){},
212212
cvvValidator: (String? cvv){},
213213
cardHolderValidator: (String? cardHolderName){},
214+
isCardHolderNameUpperCase: true,
214215
onFormComplete: () {
215216
// callback to execute at the end of filling card data
216217
},

Diff for: lib/src/credit_card_form.dart

+14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter/src/services/text_formatter.dart';
23

34
import '../flutter_credit_card.dart';
45
import 'masked_text_controller.dart';
56
import 'utils/constants.dart';
7+
import 'utils/helpers.dart';
68
import 'utils/typedefs.dart';
79
import 'utils/validators.dart';
810

@@ -35,6 +37,7 @@ class CreditCardForm extends StatefulWidget {
3537
this.cardHolderValidator,
3638
this.onFormComplete,
3739
this.disableCardNumberAutoFillHints = false,
40+
this.isCardHolderNameUpperCase = false,
3841
super.key,
3942
});
4043

@@ -134,6 +137,9 @@ class CreditCardForm extends StatefulWidget {
134137
/// [https://github.com/flutter/flutter/issues/104604](https://github.com/flutter/flutter/issues/104604).
135138
final bool disableCardNumberAutoFillHints;
136139

140+
/// When true card holder field will make all the input value to uppercase
141+
final bool isCardHolderNameUpperCase;
142+
137143
@override
138144
State<CreditCardForm> createState() => _CreditCardFormState();
139145
}
@@ -298,6 +304,14 @@ class _CreditCardFormState extends State<CreditCardForm> {
298304
textInputAction: TextInputAction.done,
299305
autofillHints: const <String>[AutofillHints.creditCardName],
300306
onEditingComplete: _onHolderNameEditComplete,
307+
textCapitalization: widget.isCardHolderNameUpperCase
308+
? TextCapitalization.characters
309+
: TextCapitalization.none,
310+
inputFormatters: widget.isCardHolderNameUpperCase
311+
? <TextInputFormatter>[
312+
UpperCaseTextFormatter(),
313+
]
314+
: null,
301315
validator: widget.cardHolderValidator,
302316
),
303317
),

Diff for: lib/src/plugin/flutter_credit_card_method_channel.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,12 @@ class MethodChannelFlutterCreditCard extends FlutterCreditCardPlatform {
7777

7878
@override
7979
Future<void> dispose() async {
80+
if (_isGyroscopeAvailable) {
81+
await cancelEvents();
82+
}
8083
_isGyroscopeAvailable = false;
8184
_gyroscopeEventChannel = null;
82-
await cancelEvents();
85+
8386
_methodChannel = null;
8487
}
8588
}

Diff for: lib/src/utils/helpers.dart

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter/services.dart';
12
import 'package:flutter/widgets.dart';
23

34
import '../models/custom_card_type_icon.dart';
@@ -87,3 +88,14 @@ Widget getCardTypeImage({
8788
},
8889
).cardImage;
8990
}
91+
92+
class UpperCaseTextFormatter extends TextInputFormatter {
93+
@override
94+
TextEditingValue formatEditUpdate(
95+
TextEditingValue oldValue, TextEditingValue newValue) {
96+
return TextEditingValue(
97+
text: newValue.text.toUpperCase(),
98+
selection: newValue.selection,
99+
);
100+
}
101+
}

0 commit comments

Comments
 (0)