Skip to content

Commit 0ca5698

Browse files
committed
Migrate to dlibphonenumber
1 parent 77a0708 commit 0ca5698

File tree

3 files changed

+29
-43
lines changed

3 files changed

+29
-43
lines changed

README.md

+3-29
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ A simple and customizable flutter package for inputting phone number in intl / i
1212

1313

1414
### What's new
15+
- Replace libphonenumber_plugin with dlibphonenumber
1516
- Updated libphonenumber and PhoneNumberToCarrierMapper on Android
1617
- Removed dependency on libphonenumber
1718
- Switch from libphonenumber-iOS to PhoneNumberKit on iOS
@@ -20,7 +21,7 @@ A simple and customizable flutter package for inputting phone number in intl / i
2021

2122

2223
### Features
23-
- Web support.
24+
- Support all Flutter platforms.
2425
- Support for RTL languages
2526
- Selector mode dropdown, bottom sheet and dialog
2627
- As You Type Formatter: formats inputs to its selected international format
@@ -35,33 +36,6 @@ A simple and customizable flutter package for inputting phone number in intl / i
3536
`controller reference`.text = parsableNumber
3637
```
3738

38-
### Web Support
39-
40-
In your app directory, edit `web/index.html` to add the following
41-
42-
```html
43-
44-
<!DOCTYPE html>
45-
<html>
46-
<head>
47-
...
48-
</head>
49-
<body>
50-
51-
...
52-
53-
<script src="assets/packages/libphonenumber_plugin/js/libphonenumber.js"></script>
54-
<script src="assets/packages/libphonenumber_plugin/js/stringbuffer.js"></script>
55-
56-
...
57-
58-
<script src="main.dart.js" type="application/javascript"></script>
59-
</body>
60-
</html>
61-
```
62-
63-
Or checkout `/example` folder from [Github](https://github.com/natintosh/intl_phone_number_input/tree/develop/example).
64-
6539

6640
### Note
6741
``` dart
@@ -195,7 +169,7 @@ Made with [contributors-img](https://contributors-img.web.app).
195169

196170
# Dependencies
197171

198-
* [libphonenumber](https://pub.dev/packages/libphonenumber)
172+
* [dlibphonenumber](https://pub.dev/packages/dlibphonenumber)
199173
* [equatable](https://pub.dev/packages/equatable)
200174

201175
# Credits

lib/src/utils/phone_number/phone_number_util.dart

+25-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import 'package:dlibphonenumber/dlibphonenumber.dart' as p;
12
import 'package:intl_phone_number_input/src/utils/phone_number.dart';
2-
import 'package:libphonenumber_plugin/libphonenumber_plugin.dart' as p;
33

4-
/// A wrapper class [PhoneNumberUtil] that basically switch between plugin available for `Web` or `Android or IOS` and `Other platforms` when available.
54
class PhoneNumberUtil {
5+
static p.PhoneNumberUtil phoneUtil = p.PhoneNumberUtil.instance;
6+
67
/// [isValidNumber] checks if a [phoneNumber] is valid.
78
/// Accepts [phoneNumber] and [isoCode]
89
/// Returns [Future<bool>].
@@ -11,35 +12,41 @@ class PhoneNumberUtil {
1112
if (phoneNumber.length < 2) {
1213
return false;
1314
}
14-
return p.PhoneNumberUtil.isValidPhoneNumber(phoneNumber, isoCode);
15+
final number = phoneUtil.parse(phoneNumber, isoCode.toUpperCase());
16+
return phoneUtil.isValidNumber(number);
1517
}
1618

1719
/// [normalizePhoneNumber] normalizes a string of characters representing a phone number
1820
/// Accepts [phoneNumber] and [isoCode]
1921
/// Returns [Future<String>]
2022
static Future<String?> normalizePhoneNumber(
2123
{required String phoneNumber, required String isoCode}) async {
22-
return p.PhoneNumberUtil.normalizePhoneNumber(phoneNumber, isoCode);
24+
final number = phoneUtil.parse(phoneNumber, isoCode.toUpperCase());
25+
return phoneUtil.format(number, p.PhoneNumberFormat.e164);
2326
}
2427

2528
/// Accepts [phoneNumber] and [isoCode]
2629
/// Returns [Future<RegionInfo>] of all information available about the [phoneNumber]
2730
static Future<RegionInfo> getRegionInfo(
2831
{required String phoneNumber, required String isoCode}) async {
29-
var response = await p.PhoneNumberUtil.getRegionInfo(phoneNumber, isoCode);
30-
32+
final number = phoneUtil.parse(phoneNumber, isoCode.toUpperCase());
33+
final regionCode = phoneUtil.getRegionCodeForNumber(number);
34+
final countryCode = number.countryCode.toString();
35+
final formattedNumber =
36+
phoneUtil.format(number, p.PhoneNumberFormat.national);
3137
return RegionInfo(
32-
regionPrefix: response.regionPrefix,
33-
isoCode: response.isoCode,
34-
formattedPhoneNumber: response.formattedPhoneNumber);
38+
regionPrefix: countryCode,
39+
isoCode: regionCode,
40+
formattedPhoneNumber: formattedNumber,
41+
);
3542
}
3643

3744
/// Accepts [phoneNumber] and [isoCode]
3845
/// Returns [Future<PhoneNumberType>] type of phone number
3946
static Future<PhoneNumberType> getNumberType(
4047
{required String phoneNumber, required String isoCode}) async {
41-
final dynamic type =
42-
await p.PhoneNumberUtil.getNumberType(phoneNumber, isoCode);
48+
final p.PhoneNumberType type = phoneUtil
49+
.getNumberType(phoneUtil.parse(phoneNumber, isoCode.toUpperCase()));
4350

4451
return PhoneNumberTypeUtil.getType(type.index);
4552
}
@@ -49,7 +56,12 @@ class PhoneNumberUtil {
4956
/// Returns [Future<String>]
5057
static Future<String?> formatAsYouType(
5158
{required String phoneNumber, required String isoCode}) async {
52-
return p.PhoneNumberUtil.formatAsYouType(phoneNumber, isoCode);
59+
final asYouTypeFormatter = phoneUtil.getAsYouTypeFormatter(isoCode);
60+
String? result;
61+
for (int i = 0; i < phoneNumber.length; i++) {
62+
result = asYouTypeFormatter.inputDigit(phoneNumber[i]);
63+
}
64+
return result;
5365
}
5466
}
5567

@@ -138,7 +150,7 @@ extension phonenumbertypeproperties on PhoneNumberType {
138150
return 6;
139151
case PhoneNumberType.PERSONAL_NUMBER:
140152
return 7;
141-
case PhoneNumberType.PREMIUM_RATE:
153+
case PhoneNumberType.PAGER:
142154
return 8;
143155
case PhoneNumberType.UAN:
144156
return 9;

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dependencies:
1010
flutter:
1111
sdk: flutter
1212

13-
libphonenumber_plugin: ^0.3.3
13+
dlibphonenumber: ^1.1.17
1414
equatable: ^2.0.5
1515
collection: ^1.18.0
1616

0 commit comments

Comments
 (0)