Flutter获取公网IP插件get_public_ip的使用

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

Flutter获取公网IP插件get_public_ip的使用

介绍

get_public_ip 是一个Dart包,用于获取系统的公网IP地址。通过这个插件,您可以在Flutter应用中轻松获取设备的公网IPv4、IPv6和IPv64地址。

开始使用

1. 添加依赖

首先,在您的 pubspec.yaml 文件中添加 get_public_ip 的依赖:

dependencies:
  get_public_ip: ^1.0.1

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

2. 完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 get_public_ip 插件来获取公网IP地址,并将其显示在界面上。

import 'package:flutter/material.dart';
import 'package:get_public_ip/get_public_ip.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> {
  // 初始化IP地址为空字符串
  String ipv4 = '';
  String ipv6 = '';
  String ip64 = '';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 显示获取到的公网IPv4地址
            Text('公网IPv4: $ipv4'),
            // 显示获取到的公网IPv6地址
            Text('公网IPv6: $ipv6'),
            // 显示获取到的公网IP64地址
            Text('公网IP64: $ip64'),
            // 按钮,点击后获取公网IP地址
            TextButton(
              onPressed: () async {
                // 异步获取公网IPv4地址
                ipv4 = await GetPublicIP.ipv4();
                // 异步获取公网IPv6地址
                ipv6 = await GetPublicIP.ipv6();
                // 异步获取公网IP64地址
                ip64 = await GetPublicIP.ip64();

                // 如果获取失败,显示“获取失败”
                ipv4 = ipv4.isNotEmpty ? ipv4 : '获取失败';
                ipv6 = ipv6.isNotEmpty ? ipv6 : '获取失败';
                ip64 = ip64.isNotEmpty ? ip64 : '获取失败';

                // 更新UI
                setState(() {});
              },
              child: const Text('获取公网IP'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter获取公网IP插件get_public_ip的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter获取公网IP插件get_public_ip的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter应用中使用get_public_ip插件来获取公网IP地址的代码示例。这个插件提供了一个简单的方法来从外部服务获取用户的公网IP地址。

首先,确保你已经在pubspec.yaml文件中添加了get_public_ip依赖:

dependencies:
  flutter:
    sdk: flutter
  get_public_ip: ^0.3.0  # 请检查最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用get_public_ip插件:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? publicIP;
  String? errorMessage;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Get Public IP Address'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              if (publicIP != null)
                Text(
                  'Your Public IP Address: $publicIP',
                  style: TextStyle(fontSize: 20),
                ),
              if (errorMessage != null)
                Text(
                  'Error: $errorMessage',
                  style: TextStyle(color: Colors.red, fontSize: 16),
                ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  setState(() {
                    publicIP = null;
                    errorMessage = null;
                  });
                  try {
                    String? ip = await GetPublicIP.ip;
                    setState(() {
                      publicIP = ip;
                    });
                  } catch (e) {
                    setState(() {
                      errorMessage = e.toString();
                    });
                  }
                },
                child: Text('Get Public IP'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们导入了必要的包:flutter/material.dart用于UI构建,get_public_ip/get_public_ip.dart用于获取公网IP。
  2. 创建了一个MyApp有状态小部件,其中包含一个状态变量publicIP来存储获取的公网IP地址,以及一个errorMessage来存储可能的错误信息。
  3. build方法中,我们构建了一个简单的UI,包括一个显示公网IP的文本(如果已获取),一个显示错误信息的文本(如果有),以及一个按钮来触发获取公网IP的操作。
  4. 按钮的onPressed回调中,我们使用GetPublicIP.ip异步获取公网IP地址。获取成功后,更新publicIP状态;如果捕获到异常,则更新errorMessage状态。

这个示例提供了一个完整的工作流程,从依赖添加、状态管理到UI展示,展示了如何在Flutter应用中使用get_public_ip插件来获取用户的公网IP地址。

回到顶部