Flutter电话号码验证输入插件phone_number_validation_input的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter电话号码验证输入插件phone_number_validation_input的使用

特性

  • 基于国家拨号代码验证电话号码
  • 可以接受电子邮件地址
  • 可以作为简单的TextField使用
  • 可自定义UI元素,包括文本样式、边框、提示文本等

开始使用

要开始使用此插件,将其添加到你的pubspec.yaml文件中:

dependencies:
  phone_number_validation_input: ^1.0.0

然后运行以下命令:

flutter pub get

使用方法

以下是使用PhoneNumberValidatorInput小部件的基本示例:

import 'package:phone_number_validation_input/phone_number_validation_input.dart';
import 'package:flutter/material.dart';

class MyHomePage extends StatelessWidget {
  // 创建一个控制器用于管理输入框内容
  final TextEditingController _phoneController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('电话号码验证输入示例'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: PhoneNumberValidatorInput(
          controller: _phoneController, // 绑定控制器
          canAcceptEmail: false, // 禁止接受电子邮件地址
          hintText: '例如:+98 912 345 6789', // 提示文本
          emptyFieldErrorMessage: '请输入电话号码', // 空字段错误信息
          inValidPhoneNumberErrorMessage: '请输入有效的电话号码', // 无效电话号码错误信息
          inValidLengthErrorMessage: '电话号码长度不正确', // 电话号码长度错误信息
          onChanged: (value) {
            print('电话号码: $value'); // 输入变化时的回调函数
          },
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用phone_number_validation_input插件来实现电话号码验证输入的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  phone_number_validation_input: ^x.y.z  # 请替换为最新版本号

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

接下来,在你的Dart文件中,你可以使用PhoneNumberValidationInput小部件来实现电话号码验证输入。以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:phone_number_validation_input/phone_number_validation_input.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PhoneNumberValidationScreen(),
    );
  }
}

class PhoneNumberValidationScreen extends StatefulWidget {
  @override
  _PhoneNumberValidationScreenState createState() => _PhoneNumberValidationScreenState();
}

class _PhoneNumberValidationScreenState extends State<PhoneNumberValidationScreen> {
  final _formKey = GlobalKey<FormState>();
  String _phoneNumber = '';
  String? _validationError;

  void _submitForm() {
    if (_formKey.currentState!.validate()) {
      _formKey.currentState!.save();
      // 在这里处理有效的电话号码,例如发送到服务器进行进一步验证
      print('Valid Phone Number: $_phoneNumber');
    } else {
      // 如果验证失败,显示错误信息
      setState(() {
        _validationError = 'Please enter a valid phone number.';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Phone Number Validation Input Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(
                  labelText: 'Phone Number',
                  errorText: _validationError,
                ),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Phone number is required.';
                  }
                  // 这里通常你会调用一个方法来验证电话号码格式,但因为我们使用的是一个插件,
                  // 所以实际的验证逻辑会在PhoneNumberValidationInput组件中处理。
                  return null;
                },
                enabled: false,  // 因为我们使用PhoneNumberValidationInput,所以这个TextFormField只是占位符
              ),
              SizedBox(height: 16),
              PhoneNumberValidationInput(
                onChanged: (value) {
                  setState(() {
                    _phoneNumber = value;
                    _validationError = null; // 清除之前的错误信息
                  });
                },
                decoration: InputDecoration(
                  labelText: 'Enter your phone number',
                ),
                ignoreBlank: false,
                autoValidateMode: AutovalidateMode.onUserInteraction,
                validator: (String? value) {
                  if (value == null || value.isEmpty) {
                    return 'Phone number is required.';
                  }
                  // 这里可以使用更复杂的验证逻辑,例如特定国家的号码格式
                  // 但插件通常会处理这些,所以我们这里只返回null表示格式正确
                  return null;
                },
              ),
              SizedBox(height: 24),
              ElevatedButton(
                onPressed: _submitForm,
                child: Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们使用了PhoneNumberValidationInput小部件来输入和验证电话号码。注意以下几点:

  1. PhoneNumberValidationInput小部件替换了传统的TextFormField进行电话号码输入,因为它内置了电话号码格式验证。
  2. ignoreBlank属性设置为false,这意味着空字符串将被视为无效输入。
  3. autoValidateMode属性设置为AutovalidateMode.onUserInteraction,这意味着当用户与表单字段交互时,将自动进行验证。
  4. validator回调用于自定义验证逻辑,但在这个例子中,我们简单地返回null,因为PhoneNumberValidationInput已经处理了基本的格式验证。

请确保你已经正确安装并导入了phone_number_validation_input插件,并根据需要调整代码中的逻辑。

回到顶部