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

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

show_country_picker_flutter 是一个用于展示国家选择器的 Flutter 库。它支持搜索和选择国家,并且具有可自定义的用户界面元素,可以轻松集成到 Flutter 项目中。

特性

  • 显示国家列表。
  • 允许用户搜索国家。
  • 可定制的用户界面元素。
  • 简单地集成到 Flutter 项目中。

安装

要将 show_country_picker_flutter 添加到你的项目中,你需要在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  show_country_picker_flutter: ^1.0.0

然后运行 flutter pub get 来安装该包。

使用

你可以通过 showModalBottomSheetShowCountryPickerFlutter 集成到 Flutter 项目中,以实现模态底部弹出框的效果。以下是一个简单的示例:

import 'dart:developer';

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  late TextEditingController textEditingController;
  late FocusNode focusNode;

  [@override](/user/override)
  void initState() {
    super.initState();
    textEditingController = TextEditingController();
    focusNode = FocusNode();
  }

  [@override](/user/override)
  void dispose() {
    textEditingController.dispose();
    focusNode.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: openCountryWidget(),
      ),
    );
  }

  Widget openCountryWidget() {
    return GestureDetector(
      onTap: () => showModalBottomSheet(
        context: context,
        builder: (context) {
          return ShowCountryPickerFlutter(
            textEditingController: textEditingController,
            focusNode: focusNode,
            onTap: (Map<String, dynamic> countryDetail) => log(countryDetail.toString()),
            // isDisplayDialCode: true, // 如果你想显示区号,请取消注释此行
          );
        },
      ),
      child: Container(
        width: 150,
        height: 40,
        decoration: BoxDecoration(
          color: Colors.red,
          borderRadius: BorderRadius.circular(12),
        ),
        alignment: Alignment.center,
        child: const Text(
          "打开国家列表",
          style: TextStyle(color: Colors.white),
        ),
      ),
    );
  }
}
1 回复

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


show_country_picker_flutter 是一个用于在 Flutter 应用中显示国家选择器的插件。它允许用户从列表中选择一个国家,并返回所选国家的相关信息(如国家代码、国旗等)。

安装插件

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

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

然后运行 flutter pub get 来安装插件。

基本用法

以下是一个简单的示例,展示如何使用 show_country_picker_flutter 插件来显示国家选择器,并获取用户选择的国家信息。

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

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

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

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Country Picker Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            final selectedCountry = await showCountryPicker(
              context: context,
              showPhoneCode: true, // 显示电话区号
            );

            if (selectedCountry != null) {
              print('Selected Country: ${selectedCountry.name}');
              print('Country Code: ${selectedCountry.countryCode}');
              print('Phone Code: ${selectedCountry.phoneCode}');
            }
          },
          child: Text('Select Country'),
        ),
      ),
    );
  }
}

参数说明

showCountryPicker 函数接受以下参数:

  • context: BuildContext,用于显示对话框。
  • showPhoneCode: 布尔值,决定是否显示电话区号。
  • onSelect: 回调函数,当用户选择一个国家时触发。
  • excluded: 可选的 List<String>,包含要排除的国家代码。
  • sortComparator: 可选的比较函数,用于自定义国家的排序方式。

返回值

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

  • name: 国家名称。
  • countryCode: 国家代码(如 “US”)。
  • phoneCode: 电话区号(如 “+1”)。
  • flagEmoji: 国家的国旗表情符号。

自定义样式

你可以通过传递 countryListTheme 参数来自定义国家选择器的样式:

final selectedCountry = await showCountryPicker(
  context: context,
  showPhoneCode: true,
  countryListTheme: CountryListThemeData(
    flagSize: 25,
    backgroundColor: Colors.white,
    textStyle: TextStyle(fontSize: 16, color: Colors.blue),
    searchTextStyle: TextStyle(fontSize: 16, color: Colors.green),
    inputDecoration: InputDecoration(
      labelText: 'Search',
      hintText: 'Start typing to search',
      border: OutlineInputBorder(),
    ),
  ),
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!