Flutter国家信息管理插件countries_utils的使用

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

Flutter国家信息管理插件countries_utils的使用

GitHub issues GitHub forks GitHub stars Twitter URL

一个轻量级的dart包,用于在您的dart或flutter应用中提供离线的世界国家数据,并带有实用工具。

[note] : 这个包从旧的flutter_countries名称迁移到countries_utils,使其适用于所有dart项目,无flutter依赖。

安装

在您的pubspec.yaml文件中添加对包的依赖:

dependencies:
    countries_utils: <last_version>

然后获取包:

flutter pub get

参数

以下是每个国家可以提供的属性列表:

参数 返回类型 输出示例
name String Egypt
nativeName TranslationList 共和国
translations TranslationList TranslationList(translations:List
demonym String Egyptian
altSpellings List [“EG”, “Arab Republic of Egypt”]
alpha2Code String EG
alpha3Code String EGY
numericCode String 818
topLevelDomain List [’.eg’]
capital String Cairo
region String Africa
currnecies CurrencyList CurrencyList(currencies:List
languages Map<String, dynamic> {‘eng’: ‘English’, ‘ara’: 'Arabic '}
borders List [“LBY”,“PSE”,“SDN”]
area double 1002450.0
flags List [“https://restcountries.com/data/egy.svg","https://restcountries.com/data/png/egy.png”]
flagIcon String [🇪🇬]
phoneCode List +20
latitiude double 27
longitude double 30

方法

以下是您可以获取国家数据的方法列表:

方法 返回类型 描述 示例
all() List 获取所有国家数据 Countries.all()
byName() Country 按名称获取国家 Countries.byName(‘Egypt’)
byCode() Country 按alpha2代码获取国家 Countries.byCode(‘EG’)
byAlpha3Code() Country 按alpha3代码获取国家 Countries.byAlpha3Code(‘EGY’)
byNumericCode() Country 按数字代码获取国家 Countries.byNumericCode(‘818’)
byCallingCodes() Country 按电话代码获取国家 Countries.byCallingCodes(’+20’)
byCapital() Country 按首都获取国家 Countries.byCapital(‘Cairo’)
byFlag() Country 按旗帜图标获取国家 Countries.byFlag(‘🇪🇬’)
byLanguageCode() List 按语言代码获取国家 Countries.byLanguageCode(‘ara’)
byLanguageName() List 按语言名称获取国家 Countries.byLanguageName(‘Arabic’)
unMembers() List 获取联合国成员国家 Countries.unMembers()
byRegion() List 按区域获取国家 Countries.byRegion(‘Africa’)
byArea() Country 按面积获取国家 Countries.byArea(1002450)
areaBiggerThan() List 获取大于给定面积的国家 Countries.areaBiggerThan(1002450)
areaSmallerThan() List 获取小于给定面积的国家 Countries.areaSmallerThan(1002450)

示例代码

以下是一个简单的示例,展示如何使用countries_utils插件来展示国家列表。

example/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:countries_utils/countries_utils.dart';

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 获取所有国家数据
    final List<Country> countries = Countries.all();

    return Scaffold(
        body: Center(
      child: CupertinoPicker(
          onSelectedItemChanged: (i) {},
          scrollController: FixedExtentScrollController(initialItem: 67),
          offAxisFraction: .1,
          diameterRatio: 1.1,
          itemExtent: 50.0,
          magnification: 1.4,
          squeeze: 1.45,
          useMagnifier: true,
          looping: true,
          children: countries
              .map((country) => Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(
                      Localizations.localeOf(context).languageCode == "en"
                          ? '${country.name} ${country.flagIcon}'
                          : '${country.nativeName}  ${country.flagIcon}',
                      style: Theme.of(context).textTheme.bodyText1,
                    ),
                  ))
              .toList()),
    ));
  }
}

更多关于Flutter国家信息管理插件countries_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter国家信息管理插件countries_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用countries_utils插件的示例代码。countries_utils是一个用于管理国家信息的Flutter插件,提供了获取国家列表、国家详细信息等功能。

首先,确保你的Flutter项目中已经添加了countries_utils依赖。在pubspec.yaml文件中添加以下依赖:

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

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

接下来,在你的Dart文件中使用countries_utils。以下是一个简单的示例,展示了如何获取国家列表并显示一些国家信息:

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<Country> countries = [];

  @override
  void initState() {
    super.initState();
    // 获取所有国家信息
    countries = getAllCountries();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Countries Utils Demo'),
      ),
      body: ListView.builder(
        itemCount: countries.length,
        itemBuilder: (context, index) {
          Country country = countries[index];
          return ListTile(
            title: Text(country.name),
            subtitle: Text('Dial Code: ${country.dialCode}, Code: ${country.code}'),
            trailing: Icon(Icons.arrow_forward),
            onTap: () {
              // 可以在这里添加点击事件,例如跳转到详细信息页面
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => CountryDetailPage(country: country),
                ),
              );
            },
          );
        },
      ),
    );
  }
}

class CountryDetailPage extends StatelessWidget {
  final Country country;

  CountryDetailPage({required this.country});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(country.name),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Name: ${country.name}'),
            Text('Dial Code: ${country.dialCode}'),
            Text('Code: ${country.code}'),
            Text('Currency Code: ${country.currencyCode}'),
            Text('Currency Name: ${country.currencyName}'),
            Text('Capital: ${country.capital}'),
            Text('Region: ${country.region}'),
            Text('Subregion: ${country.subregion}'),
            // 可以继续添加更多国家信息
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. initState方法中,我们调用getAllCountries()方法来获取所有国家的列表。
  2. 使用ListView.builder来构建包含国家信息的列表项。
  3. 每个列表项点击时,会导航到一个新的页面CountryDetailPage,显示该国家的详细信息。

注意:

  • getAllCountries()方法返回的是一个List<Country>对象,其中Country类包含了国家的各种信息,如名称、拨号代码、货币代码等。
  • 你可以根据需要进一步自定义和扩展这个示例,例如添加搜索功能、过滤功能等。

希望这个示例能帮助你更好地理解和使用countries_utils插件!

回到顶部