Flutter国家选择器插件eo_country_picker的使用

Flutter国家选择器插件eo_country_picker的使用

简介

eo_country_picker 是一个用于 Flutter 的插件,允许用户选择国家并获取其名称、国旗、ISO 代码和拨号代码。此插件非常适合需要用户输入或选择国家的应用程序,例如电话号码输入字段。

特性

  • 获取国家名称、国旗表情符号、ISO 代码和拨号代码。
  • 简单易用的 API。
  • 支持国家选择和检索。

安装

pubspec.yaml 文件中添加以下依赖项:

flutter pub add eo_country_picker

导入

在 Dart 文件中导入插件:

import 'package:eo_country_picker/eo_country_picker.dart';

使用示例:

FilledButton(
    onPressed: () async {
    final result = await CountryPicker.open(context: context);
    if (result != null) {
        setState(() {
        _selectedCountry = result;
        });
    }
    },
    child: const Text("Pick a Country"),
),

截图

所有国家

所有国家

搜索结果

搜索结果

选择的国家

选择的国家

示例代码

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

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

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Example(),
    );
  }
}

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

  @override
  State<Example> createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  Country? _selectedCountry;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 显示选中的国家信息
            if (_selectedCountry != null)
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text(_selectedCountry.toString()),
              ),
            // 按钮用于打开国家选择器
            FilledButton(
              onPressed: () async {
                final result = await CountryPicker.open(context: context);
                if (result != null) {
                  setState(() {
                    _selectedCountry = result;
                  });
                }
              },
              child: const Text("Pick a Country"),
            ),
          ],
        ),
      ),
    );
  }
}

代码说明

  1. 导入插件

    import 'package:eo_country_picker/eo_country_picker.dart';
    
  2. 定义主应用

    void main() {
      runApp(const MainApp());
    }
    
    class MainApp extends StatelessWidget {
      const MainApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return const MaterialApp(
          home: Example(),
        );
      }
    }
    
  3. 定义示例页面

    class Example extends StatefulWidget {
      const Example({super.key});
    
      @override
      State<Example> createState() => _ExampleState();
    }
    
  4. 实现状态管理

    class _ExampleState extends State<Example> {
      Country? _selectedCountry;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                // 显示选中的国家信息
                if (_selectedCountry != null)
                  Padding(
                    padding: const EdgeInsets.all(16.0),
                    child: Text(_selectedCountry.toString()),
                  ),
                // 按钮用于打开国家选择器
                FilledButton(
                  onPressed: () async {
                    final result = await CountryPicker.open(context: context);
                    if (result != null) {
                      setState(() {
                        _selectedCountry = result;
                      });
                    }
                  },
                  child: const Text("Pick a Country"),
                ),
              ],
            ),
          ),
        );
      }
    }
    

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

1 回复

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


eo_country_picker 是一个用于 Flutter 的国家选择器插件,它允许用户从列表中选择一个国家。这个插件通常用于需要用户选择国家信息的场景,比如注册表单、地址填写等。

安装

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

dependencies:
  flutter:
    sdk: flutter
  eo_country_picker: ^1.0.0  # 请检查最新版本

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

基本使用

  1. 导入包

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

    import 'package:eo_country_picker/eo_country_picker.dart';
    
  2. 显示国家选择器

    你可以使用 showCountryPicker 方法来显示国家选择器。这个方法会返回用户选择的国家信息。

    void _showCountryPicker(BuildContext context) async {
      final country = await showCountryPicker(
        context: context,
      );
    
      if (country != null) {
        print('Selected country: ${country.name}');
        print('Country code: ${country.code}');
      }
    }
    
  3. 在按钮中触发选择器

    你可以在按钮的 onPressed 事件中调用 _showCountryPicker 方法来触发国家选择器。

    ElevatedButton(
      onPressed: () => _showCountryPicker(context),
      child: Text('Select Country'),
    );
    

自定义选项

showCountryPicker 方法提供了一些可选参数,允许你自定义选择器的行为:

  • showPhoneCode: 是否显示国家电话区号,默认为 false
  • showFlag: 是否显示国家国旗,默认为 true
  • showName: 是否显示国家名称,默认为 true
  • showCode: 是否显示国家代码,默认为 true
  • searchHint: 搜索框的提示文本。
  • searchAutofocus: 是否自动聚焦到搜索框,默认为 false
  • showWorldWide: 是否显示“全球”选项,默认为 false

例如:

final country = await showCountryPicker(
  context: context,
  showPhoneCode: true,
  searchHint: 'Search for a country',
  searchAutofocus: true,
);

处理选择的国家

showCountryPicker 方法返回一个 Country 对象,包含以下属性:

  • name: 国家名称。
  • code: 国家代码(ISO 3166-1 alpha-2)。
  • dialCode: 国家电话区号。
  • flag: 国家国旗的 Unicode 字符。

你可以根据需要使用这些信息。

示例代码

以下是一个完整的示例代码,展示了如何使用 eo_country_picker

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  void _showCountryPicker(BuildContext context) async {
    final country = await showCountryPicker(
      context: context,
      showPhoneCode: true,
      searchHint: 'Search for a country',
      searchAutofocus: true,
    );

    if (country != null) {
      print('Selected country: ${country.name}');
      print('Country code: ${country.code}');
      print('Dial code: ${country.dialCode}');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Country Picker Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => _showCountryPicker(context),
          child: Text('Select Country'),
        ),
      ),
    );
  }
}
回到顶部