Flutter IP地址查询插件apiip的使用

Flutter IP地址查询插件apiip的使用

apiip 是一个围绕 apiip.net API 的封装库,它提供了针对 IPv4 和 IPv6 地址的信息查询服务。

开始使用

首先,你需要在 https://apiip.net 创建一个账户以获取访问密钥。

你可以使用该密钥来访问 API:

import 'package:apiip/apiip.dart';

void main() {
  final client = Apiip('ACCESS_KEY', useHttps: false); // HTTPS 不适用于免费用户。

  print((await client.lookupSelf()).countryName);
}

上述代码展示了如何创建一个 Apiip 客户端,并通过该客户端查询自身的 IP 信息。其中 lookupSelf() 方法用于查询当前设备的 IP 地址信息。

示例代码

以下是一个完整的示例代码,展示如何查询特定 IP 地址的信息:

import 'dart:io'; // 导入dart:io库

import 'package:apiip/apiip.dart'; // 导入apiip包

void main() async { // 主函数
  final apiip = Apiip(Platform.environment['ACCESS_KEY']!, useHttps: false); // 创建Apiip实例,使用环境变量中的访问密钥

  final result = await apiip.lookup('8.8.8.8'); // 查询特定IP地址的信息

  print(result.countryName); // 输出国家名称,例如 "United States"
}

更多关于Flutter IP地址查询插件apiip的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter IP地址查询插件apiip的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 apiip 插件查询 IP 地址信息非常简单。apiip 是一个提供 IP 地址查询的 API 服务,你可以通过它获取 IP 地址的地理位置、ISP 等信息。

以下是如何在 Flutter 中使用 apiip 的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 http 依赖,用于发送 HTTP 请求:

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3

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

2. 获取 API 密钥

你需要到 apiip.net 注册一个账号并获取 API 密钥。

3. 编写代码

接下来,你可以编写代码来调用 apiip 的 API 并获取 IP 地址信息。

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'API IP Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: IPInfoScreen(),
    );
  }
}

class IPInfoScreen extends StatefulWidget {
  [@override](/user/override)
  _IPInfoScreenState createState() => _IPInfoScreenState();
}

class _IPInfoScreenState extends State<IPInfoScreen> {
  Map<String, dynamic>? ipInfo;
  bool isLoading = false;

  Future<void> fetchIPInfo() async {
    setState(() {
      isLoading = true;
    });

    final apiKey = 'YOUR_API_KEY_HERE'; // 替换为你的 API 密钥
    final url = 'https://apiip.net/api/check?accessKey=$apiKey';

    try {
      final response = await http.get(Uri.parse(url));
      if (response.statusCode == 200) {
        setState(() {
          ipInfo = json.decode(response.body);
          isLoading = false;
        });
      } else {
        throw Exception('Failed to load IP info');
      }
    } catch (e) {
      setState(() {
        isLoading = false;
      });
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('IP Info'),
      ),
      body: Center(
        child: isLoading
            ? CircularProgressIndicator()
            : ipInfo == null
                ? Text('Press the button to fetch IP info')
                : Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Text('IP: ${ipInfo!['ip']}'),
                      Text('Country: ${ipInfo!['countryName']}'),
                      Text('City: ${ipInfo!['city']}'),
                      Text('ISP: ${ipInfo!['isp']}'),
                    ],
                  ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: fetchIPInfo,
        child: Icon(Icons.refresh),
      ),
    );
  }
}
回到顶部