Flutter国家电话代码选择器插件country_phone_code_picker的使用

Flutter国家电话代码选择器插件country_phone_code_picker的使用

特性

该插件提供了许多自定义参数,可以轻松地构建符合你需求的国家电话代码选择器!

国家电话代码选择器 (CountryPhoneCodePicker) 参数

参数名称 含义 默认值
countryController 需要传递一个国家控制器实例 无默认值
defaultCountryCode 设置默认/初始选中的国家 阿富汗
height 选择器的高度 45
width 选择器的宽度 80
flagHeight 旗帜的高度 35
flagWidth 旗帜的宽度 50
backgroundColor 选择器的背景色 透明
borderRadius 控制选择器边框圆角半径 15
flagBorderRadius 控制旗帜圆角半径 5
borderColor 选择器边框颜色 透明
borderWidth 选择器边框宽度 0
contentPadding 选择器内部填充 水平5 垂直5
countryNameTextStyle 设置国家名称字体样式 字号14 黑色
countryPhoneCodeTextStyle 设置电话代码字体样式 黑色 字号14
showFlag 如果为真,则显示旗帜
showName 如果为真,则显示国家名称
showPhoneCode 如果为真,则显示电话代码
actionIcon 选择器图标 下拉箭头图标
searchSheetBackground 搜索栏背景色 #fafafa
searchBarLeadingIcon 返回按钮图标 向左箭头图标
searchBarHintText 文本字段提示文本
searchBarHintStyle 提示文本样式 默认样式
searchBarLabelText 文本字段标签文本
searchBarLabelStyle 标签文本样式 默认样式
searchBarHelperText 文本字段辅助文本
searchBarHelperStyle 辅助文本样式 默认样式
searchBarPrefixText 文本字段前缀文本
searchBarPrefixStyle 前缀文本样式 默认样式
searchBarPrefixIcon 文本字段前缀图标 搜索图标
searchBarContentPadding 文本字段内容填充 水平10 垂直5
border 文本字段边框 无边框
errorBorder 文本字段错误边框 无边框
focusedBorder 文本字段聚焦边框 无边框
disabledBorder 文本字段禁用边框 无边框
focusedErrorBorder 文本字段聚焦错误边框 无边框
enabledBorder 文本字段启用边框 无边框
searchBarCursorColor 文本字段光标颜色 黑色
searchBarCursorHeight 文本字段光标高度 20
searchBarCursorWidth 文本字段光标宽度 2
style 设置文本字段内部输入样式 默认样式
searchBarInitialValue 文本字段初始查询 空字符串
keyboardType 文本字段输入类型 文本类型
showCursor 光标是否可见

特定详细小部件参数

参数名称 含义 默认值
height 设置小部件的高度 0
width 设置小部件的宽度 0
padding 小部件内部填充 0
borderRadius 小部件边框圆角半径 0
color 小部件的颜色 透明
borderColor 边框颜色 黑色
borderStyle 边框样式 实线
borderWidth 边框宽度 0
textStyle 设置文本样式 字号18

开始使用

在你的 pubspec.yaml 文件中添加此依赖项:

  country_phone_code_picker: <VERSION>

或者在终端运行以下命令:

  flutter pub add country_phone_code_picker

使用方法

在使用国家代码选择器之前,需要初始化 CountryController。使用以下函数来初始化 CountryController

initializeCountryController();

确保在使用小部件之前已经初始化了 CountryController。一个安全的地方是在 MaterialApp 之外初始化它!

你可以通过以下方式获取 CountryController 的实例:

CountryController countryController = getCountryController();

创建默认选中的国家选择器

CountryPhoneCodePicker.withDefaultSelectedCountry(
  countryController: countryController,
  defaultCountryCode:
  Country(name: 'India', countryCode: 'IN', phoneCode: '+91'),
  borderRadius: 5,
  borderWidth: 1,
  borderColor: Colors.grey,
  style: const TextStyle(fontSize: 16),
  searchBarHintText: 'Search by name',
),

显示特定属性

例如,显示国家代码、电话代码、名称、旗帜:

CountryPhoneCodeWidget(
  height: 30,
  width: 50,
  textStyle: const TextStyle(fontSize: 15),
  borderWidth: 1,
  borderRadius: 5,
  borderColor: Colors.black,
),

获取所选国家信息

CountryController countryController = getCountryController(); // 获取控制器实例
print(countryController.selectedCountry); // 打印所选国家
print(countryController.selectedCountryCode); // 打印所选国家代码

完整示例代码

以下是一个完整的示例代码,展示了如何使用 country_phone_code_picker 插件。

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 初始化国家控制器
    initializeCountryController();
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 获取国家控制器实例
    CountryController countryController = getCountryController();
    return Scaffold(
      appBar: AppBar(
        title: const Text('国家电话代码选择器'),
      ),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              CountryPhoneCodePicker.withDefaultSelectedCountry(
                countryController: countryController,
                defaultCountryCode:
                    Country(name: 'India', countryCode: 'IN', phoneCode: '+91'),
                borderRadius: 5,
                borderWidth: 1,
                flagBorderRadius: 5,
                flagHeight: 20,
                flagWidth: 30,
                borderColor: Colors.grey,
                style: const TextStyle(fontSize: 16),
                searchBarHintText: '搜索国家名称',
              ),
              const SizedBox(height: 10),
              CountryFlagWidget(
                height: 30,
                width: 50,
                borderStyle: BorderStyle.none,
              ),
              const SizedBox(height: 10),
              CountryNameWidget(
                height: 30,
                width: 50,
                borderStyle: BorderStyle.none,
                textStyle: const TextStyle(fontSize: 15),
              ),
              const SizedBox(height: 10),
              CountryCodeWidget(
                height: 30,
                width: 50,
                textStyle:
                    const TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10),
              CountryPhoneCodeWidget(
                height: 30,
                width: 50,
                textStyle: const TextStyle(fontSize: 15),
                borderWidth: 1,
                borderRadius: 5,
                borderColor: Colors.black,
              ),
              const SizedBox(height: 10),
              // 访问国家控制器的值
              Text(countryController.selectedCountryCode)
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter国家电话代码选择器插件country_phone_code_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter国家电话代码选择器插件country_phone_code_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


country_phone_code_picker 是一个用于 Flutter 的插件,它允许用户在应用程序中选择国家电话代码。这个插件通常用于需要用户输入电话号码的场景,以便自动填充或选择国家代码。

以下是如何在 Flutter 项目中使用 country_phone_code_picker 插件的步骤:

1. 添加依赖

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

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

然后运行 flutter pub get 来获取依赖。

2. 导入包

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

import 'package:country_phone_code_picker/country_phone_code_picker.dart';

3. 使用 CountryPhoneCodePicker

你可以在你的 UI 中使用 CountryPhoneCodePicker 小部件。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Country Phone Code Picker Example'),
        ),
        body: Center(
          child: CountryPhoneCodePicker(
            onChanged: (Country country) {
              print('Selected country: ${country.name}, code: ${country.phoneCode}');
            },
            initialCountry: Country.fromCode('US'), // 初始选择的国家
          ),
        ),
      ),
    );
  }
}

4. 配置 CountryPhoneCodePicker

CountryPhoneCodePicker 小部件有一些可配置的属性:

  • onChanged: 当用户选择国家时触发的回调函数。
  • initialCountry: 初始选择的国家,通常是 Country 对象。
  • showCountryFlag: 是否显示国家标志,默认为 true
  • showCountryName: 是否显示国家名称,默认为 true
  • showPhoneCode: 是否显示国家电话代码,默认为 true

5. 获取选中的国家信息

onChanged 回调中,你可以获取用户选择的国家的信息。Country 对象包含以下属性:

  • name: 国家名称。
  • code: 国家代码(例如:US)。
  • phoneCode: 国家电话代码(例如:+1)。

6. 自定义样式

你可以通过 decoration 属性来自定义 CountryPhoneCodePicker 的外观,例如设置边框、背景颜色等。

CountryPhoneCodePicker(
  onChanged: (Country country) {
    print('Selected country: ${country.name}, code: ${country.phoneCode}');
  },
  initialCountry: Country.fromCode('US'),
  decoration: InputDecoration(
    border: OutlineInputBorder(),
    labelText: 'Select Country',
  ),
)
回到顶部