phone_number_text_field 0.1.0
phone_number_text_field: ^0.1.0 copied to clipboard
Simple and customizable flutter package to enter phone number in international format using Google's lib phone number.
import 'package:flutter/material.dart';
import 'package:phone_number_text_field/phone_number_text_field.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
var darkTheme = ThemeData.dark().copyWith(primaryColor: Colors.blue);
return MaterialApp(
title: 'Demo',
themeMode: ThemeMode.dark,
darkTheme: darkTheme,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(title: const Text('Demo')),
body: MyHomePage(),
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
final TextEditingController controller = TextEditingController();
String initialCountry = 'TN';
PhoneNumber number = PhoneNumber(isoCode: 'TN');
@override
Widget build(BuildContext context) {
return Form(
key: formKey,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InternationalPhoneNumberInput(
textDirection: TextDirection.rtl,
onInputChanged: (PhoneNumber number) {
print(number.phoneNumber);
},
onInputValidated: (bool value) {
print(value);
},
selectorConfig: const SelectorConfig(
selectorType: PhoneInputSelectorType.BOTTOM_SHEET,
setSelectorButtonAsPrefixIcon: true, leadingPadding: 24,
),
ignoreBlank: false, autoValidateMode: AutovalidateMode.disabled,
selectorTextStyle: const TextStyle(color: Colors.black),
initialValue: number, textFieldController: controller, formatInput: true,
keyboardType: const TextInputType.numberWithOptions(signed: true, decimal: true),
inputBorder: const OutlineInputBorder(),
onSaved: (PhoneNumber number) {
print('On Saved: $number');
},
),
const SizedBox(height: 12,),
ElevatedButton(
onPressed: () {
formKey.currentState?.validate();
},
child: const Text('Validate'),
),
ElevatedButton(
onPressed: () {
getPhoneNumber('+21651674704');
},
child: const Text('Update'),
),
ElevatedButton(
onPressed: () {
formKey.currentState?.save();
},
child: const Text('Save'),
),
],
),
);
}
void getPhoneNumber(String phoneNumber) async {
PhoneNumber number = await PhoneNumber.getRegionInfoFromPhoneNumber(phoneNumber, 'TN');
setState(() {
this.number = number;
});
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}