Flutter电话号码输入插件phone_number_text_field的使用

Flutter电话号码输入插件phone_number_text_field的使用

Getting Started(开始使用)

本项目是一个用于Flutter的插件包,它包含适用于Android和/或iOS平台的特定实现代码。

对于Flutter开发的帮助,您可以查看官方文档,其中提供了教程、示例、移动开发指南以及完整的API参考。

使用示例

以下是一个完整的示例代码,展示如何在Flutter应用中使用phone_number_text_field插件:

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](/user/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](/user/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](/user/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](/user/override)
  void dispose() {
    controller.dispose(); // 释放控制器
    super.dispose();
  }
}

更多关于Flutter电话号码输入插件phone_number_text_field的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter电话号码输入插件phone_number_text_field的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


phone_number_text_field 是一个 Flutter 插件,用于在应用中输入和验证电话号码。它提供了一个美观且功能丰富的电话号码输入字段,支持国际电话号码格式。以下是如何使用 phone_number_text_field 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 phone_number_text_field 依赖:

dependencies:
  flutter:
    sdk: flutter
  phone_number_text_field: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 phone_number_text_field 包:

import 'package:phone_number_text_field/phone_number_text_field.dart';

3. 使用 PhoneNumberTextField

你可以直接在 widget 树中使用 PhoneNumberTextField

class PhoneNumberInputScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Phone Number Input'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: PhoneNumberTextField(
          onInputChanged: (PhoneNumber number) {
            print('Phone number: ${number.phoneNumber}');
            print('Country code: ${number.countryCode}');
            print('Country ISO: ${number.isoCode}');
          },
          onInputValidated: (bool value) {
            print('Phone number is valid: $value');
          },
          selectorConfig: SelectorConfig(
            selectorType: PhoneInputSelectorType.DIALOG,
          ),
          ignoreBlank: false,
          autoValidateMode: AutovalidateMode.disabled,
          selectorTextStyle: TextStyle(color: Colors.black),
          initialCountryCode: 'US',
          textFieldController: TextEditingController(),
          formatInput: true,
          keyboardType: TextInputType.numberWithOptions(
              signed: true, decimal: true),
          inputBorder: OutlineInputBorder(),
          onSaved: (PhoneNumber number) {
            print('On Saved: ${number.phoneNumber}');
          },
        ),
      ),
    );
  }
}

4. 参数说明

  • onInputChanged: 当电话号码输入发生变化时调用的回调函数。
  • onInputValidated: 当电话号码验证结果发生变化时调用的回调函数。
  • selectorConfig: 配置国家/地区选择器的行为。
  • ignoreBlank: 是否忽略空输入。
  • autoValidateMode: 自动验证模式。
  • selectorTextStyle: 国家/地区选择器的文本样式。
  • initialCountryCode: 初始国家/地区代码。
  • textFieldController: 用于控制输入字段的 TextEditingController
  • formatInput: 是否格式化输入的电话号码。
  • keyboardType: 输入字段的键盘类型。
  • inputBorder: 输入字段的边框样式。
  • onSaved: 当表单保存时调用的回调函数。

5. 运行应用

现在你可以运行你的 Flutter 应用,并查看 PhoneNumberTextField 的效果。用户可以选择国家/地区,并输入电话号码。插件会自动验证电话号码的有效性,并返回格式化后的电话号码。

6. 获取电话号码

你可以通过 onInputChanged 回调函数获取用户输入的电话号码,并在需要时使用它。

PhoneNumberTextField(
  onInputChanged: (PhoneNumber number) {
    // 使用电话号码
    print('Phone number: ${number.phoneNumber}');
  },
  // 其他参数
)

7. 验证电话号码

你可以通过 onInputValidated 回调函数验证电话号码的有效性。

PhoneNumberTextField(
  onInputValidated: (bool value) {
    // 电话号码是否有效
    print('Phone number is valid: $value');
  },
  // 其他参数
)
回到顶部