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

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

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

EphoneField 是一个功能强大的 Flutter 文本输入框组件,专门用于处理电子邮件和电话号码输入。通过实时验证和用户友好的错误处理(在开发模式下),它能够简化在 Flutter 应用程序中捕获电子邮件和电话号码输入的过程。

特性

  • 多功能性:支持电子邮件和电话号码输入。
  • 自动格式化:输入电话号码时自动格式化。
  • 可定制性:可以自定义组件的外观以适应您的应用程序。
  • 易于使用:只需将组件添加到您的用户界面即可。
  • 错误处理:提供实时验证和用户友好的错误处理(在开发模式下)。
  • 测试:单元测试确保组件按预期工作。

开始使用

在您的 Flutter 项目的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  ...
  ephone_field: ^0.0.2

然后导入该包:

import 'package:ephone_field/ephone_field.dart';

使用方法

在您的 UI 中实现 EPhoneField 组件:

EPhoneField()

ephone-field-show

EphoneField 国家选择器组件

国家选择器有三种不同的样式:对话框、底部菜单和页面。

ephone-field-dialog ephone-field-bottomsheet ephone-field-page

额外信息

以下是 EPhoneField 的一些属性及其描述:

属性名称 描述 类型 默认值
key 输入字段的键。 Key null
initialType 输入字段的初始类型。 EphoneFieldType EphoneFieldType.initial
countries 显示的国家列表。 List<Country> Country.all
controller 输入字段的控制器。 TextEditingController TextEditingController()
focusNode 输入字段的焦点节点。 FocusNode FocusNode()
decoration 输入字段的装饰。 InputDecoration InputDecoration()
keyboardType 输入字段的键盘类型。 TextInputType EphoneFieldType.keyboardType
searchInputDecoration 搜索输入字段的装饰。 InputDecoration InputDecoration()
isSearchable 是否启用搜索输入。 bool true
title 国家选择器的标题。 String null
titlePadding 国家选择器标题的填充。 EdgeInsetsGeometry EdgeInsets.all(8.0)
pickerHeight 国家选择器的高度。 CountryPickerHeigth CountryPickerHeigth.h50
menuType 选择器菜单的类型。 PickerMenuType PickerMenuType.bottomSheet
initialCountry 国家选择器的初始国家。 Country Country.unitedStates
initialValue 输入字段的初始值。 String null
emptyLabelText 输入为空时的标签文本。 String Email or phone number
emailLabelText 字段类型为电子邮件时的标签文本。 String Email
phoneLabelText 字段类型为电话时的标签文本。 String Phone
countryPickerButtonIcon 国家选择器按钮的图标。 Icon Icon(Icons.arrow_drop_down)
phoneNumberMaskSplitter 电话号码掩码的分隔符。 String null
countryPickerButtonWidth 国家选择器按钮的宽度。 double 100.0
autovalidateMode 输入字段的自动验证模式。 AutovalidateMode AutovalidateMode.onUserInteraction
onChanged 输入值更改时的回调。 ValueChanged<String> null
onSaved 输入保存时的回调。 ValueChanged<String> null
emailValidator 电子邮件输入字段的验证器。 FormValidator null
phoneValidator 电话输入字段的验证器。 FormValidator null
onFieldSubmitted 输入提交时的回调。 ValueChanged<String> null
onCountryChanged 国家更改时的回调。 ValueChanged<Country> null
inputFormatters 输入字段的输入格式化器。 List<TextInputFormatter> EphoneFieldType.inputFormatters()

完整示例代码

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  MyApp({Key? key}) : super(key: key);

  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Ephone Field Demo',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Ephone Field Demo'),
        ),
        body: Form(
          key: _formKey,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Padding(
                padding: const EdgeInsets.symmetric(horizontal: 20),
                child: EPhoneField(
                  title: "Select Country",
                  menuType: PickerMenuType.bottomSheet,
                  initialCountry: Country.afghanistan,
                  emailValidator: (String? email) {
                    if (email == null || email.isEmpty) {
                      return 'Email is required';
                    }
                    return null;
                  },
                  phoneValidator: (String? phone) {
                    if (phone == null || phone.isEmpty) {
                      return 'Phone is required';
                    }
                    return null;
                  },
                  pickerHeight: CountryPickerHeigth.h50, // 不适用于 PickerMenuType.page
                  onCountryChanged: (Country? country) {
                    // 在选择国家后添加您的代码
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用ephone_field插件来进行电话号码输入的示例代码。ephone_field是一个用于输入和验证电话号码的Flutter插件。

首先,确保你已经在pubspec.yaml文件中添加了ephone_field依赖:

dependencies:
  flutter:
    sdk: flutter
  ephone_field: ^最新版本号  # 请替换为实际最新版本号

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

接下来,你可以在你的Flutter应用中使用EphoneField小部件。以下是一个完整的示例,展示了如何使用EphoneField来输入和验证电话号码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'EphoneField Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('EphoneField Example'),
        ),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: PhoneInputExample(),
          ),
        ),
      ),
    );
  }
}

class PhoneInputExample extends StatefulWidget {
  @override
  _PhoneInputExampleState createState() => _PhoneInputExampleState();
}

class _PhoneInputExampleState extends State<PhoneInputExample> {
  final _formKey = GlobalKey<FormState>();
  String? _phoneNumber;

  @override
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          EphoneField(
            decoration: InputDecoration(
              labelText: 'Enter Phone Number',
              border: OutlineInputBorder(),
            ),
            initialCountry: 'us',  // 设置初始国家代码
            onChanged: (value) {
              setState(() {
                _phoneNumber = value;
              });
            },
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Phone number is required';
              }
              return null;
            },
          ),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: () {
              if (_formKey.currentState!.validate()) {
                // 处理有效的电话号码
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(
                    content: Text('Phone Number: $_phoneNumber'),
                  ),
                );
              }
            },
            child: Text('Submit'),
          ),
        ],
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个使用EphoneField小部件的表单。EphoneField小部件用于输入电话号码,并且我们设置了初始国家代码为us。我们还添加了一个表单验证器来确保电话号码不是空的。

当用户输入电话号码并点击提交按钮时,如果电话号码有效,将显示一个SnackBar,显示输入的电话号码。

注意:

  • 请确保你替换了ephone_field: ^最新版本号为实际的最新版本号。
  • EphoneField小部件提供了许多自定义选项,比如设置初始国家代码、国家选择器样式等,你可以根据需要进行配置。

希望这个示例能帮助你理解如何在Flutter应用中使用ephone_field插件!

回到顶部