Flutter插件via_cep的介绍与使用方法

Package 用于与 API ViaCEP 集成(https://www.viacep.com.br)。如果您正在寻找一个免费且高性能的 WebService 来查询巴西邮政编码(CEP)?请使用此服务,提升您应用的质量,并帮助维护此数据库的最新状态。

使用方法

以下是一个简单的使用示例:

import 'package:via_cep/via_cep.dart';

main() async {
  var CEP = new via_cep(); // 创建 via_cep 实例
  
  var result = await CEP.searchCEP('12512170', 'json', ''); // 查询 CEP
  
  // 成功处理
  if (CEP.getResponse() == 200) { 
     print('CEP: '+CEP.getCEP()); // 打印 CEP
     print('Logradouro: '+CEP.getLogradouro()); // 打印街道名称
     print('Complemento: '+CEP.getComplemento()); // 打印补充信息
     print('Bairro: '+CEP.getBairro()); // 打印街区名称
     print('Localidade: '+CEP.getLocalidade()); // 打印城市名称
     print('UF: '+CEP.getUF()); // 打印州缩写
     print('Unidade: '+CEP.getUnidade()); // 打印单位编号
     print('IBGE '+CEP.getIBGE()); // 打印 IBGE 市政编码
     print('GIA: '+CEP.getGIA()); // 打印 GIA 编码
  // 失败处理
  } else {
    print('Código de Retorno: '+CEP.getResponse().toString()); // 打印返回状态码
    print('Erro: '+CEP.getBody()); // 打印错误信息
  }
}

功能特性

searchCEP 方法

searchCEP 是用于查询 CEP 的方法。

参数说明:

  • String CEP: 输入的 CEP(仅限数字,不包含特殊字符,长度为 8 位)。
  • output: 数据输出类型,默认推荐使用 json
    • 选项:json, xml, piped, querty
  • sensitive: 输出数据的大小写格式。
    • 选项:空白或 null, lower, uper
    • 任何未识别的文本将被解释为空白或 null

gets 方法

这些方法在成功时(状态码 200)返回数据,否则返回 null

  • getBody();: 返回 API 响应的完整内容。
  • getResponse();: 返回 API 查询的状态码(成功默认为 200)。
  • getCEP();: 获取格式化的 CEP。
  • getLogradouro();: 获取街道名称。
  • getComplemento();: 获取补充信息。
  • getBairro();: 获取街区名称。
  • getLocalidade();: 获取城市名称。
  • getUF();: 获取州的缩写。
  • getUnidade();: 获取单位编号。
  • getIBGE();: 获取 IBGE 市政编码。
  • getGIA();: 获取 GIA 编码。

更多详情可以访问 ViaCEP 官方网站 (https://www.viacep.com.br)。

功能需求与问题报告

如需提出功能需求或报告问题,请访问 GitHub issue tracker


示例代码完整 Demo

以下是一个完整的 Flutter 应用程序示例,展示如何使用 via_cep 插件来查询 CEP 并显示结果:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ViaCEP 查询示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              var cepInstance = new via_cep();
              var result = await cepInstance.searchCEP('12512170', 'json', '');

              if (cepInstance.getResponse() == 200) {
                showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return AlertDialog(
                      title: Text('查询结果'),
                      content: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          Text('CEP: ${cepInstance.getCEP()}'),
                          Text('街道: ${cepInstance.getLogradouro()}'),
                          Text('补充信息: ${cepInstance.getComplemento()}'),
                          Text('街区: ${cepInstance.getBairro()}'),
                          Text('城市: ${cepInstance.getLocalidade()}'),
                          Text('州: ${cepInstance.getUF()}'),
                          Text('单位编号: ${cepInstance.getUnidade()}'),
                          Text('IBGE 编码: ${cepInstance.getIBGE()}'),
                          Text('GIA 编码: ${cepInstance.getGIA()}'),
                        ],
                      ),
                      actions: [
                        TextButton(
                          onPressed: () => Navigator.of(context).pop(),
                          child: Text('关闭'),
                        ),
                      ],
                    );
                  },
                );
              } else {
                showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return AlertDialog(
                      title: Text('查询失败'),
                      content: Text(
                          '错误: ${cepInstance.getBody()}, 状态码: ${cepInstance.getResponse()}'),
                      actions: [
                        TextButton(
                          onPressed: () => Navigator.of(context).pop(),
                          child: Text('关闭'),
                        ),
                      ],
                    );
                  },
                );
              }
            },
            child: Text('查询 CEP'),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter插件via_cep的介绍与使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部