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

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

用于获取用户的公网IP地址及其大致位置。

特性

->用户IP地址

获取用户的公网IP地址。

->ASN

获取自治系统号(ASN)。

->ISP

获取互联网服务提供商(ISP)。

->服务

获取其他相关信息。

->国家

获取用户所在的国家。

->州/省

获取用户所在的州或省。

->城市

获取用户所在的城市。

->经度

获取用户的经度信息。

->纬度

获取用户的纬度信息。

开始使用

在你的pubspec.yaml文件中添加依赖项:

dependencies:
  public_ip: ^0.0.2

然后运行flutter pub get来安装它。

使用示例

import 'package:flutter/material.dart';
import 'package:public_ip/public_ip.dart' as publicIP;

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('公网IP获取示例'),
        ),
        body: Center(
          child: FutureBuilder(
            future: publicIP.getPublicIp(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                if (snapshot.hasError) {
                  return Text("Error: ${snapshot.error}");
                } else {
                  return Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Text("公网IP地址: ${snapshot.data}"),
                      SizedBox(height: 20),
                      ElevatedButton(
                        onPressed: () async {
                          String publicIp = await publicIP.getPublicIp();
                          String asn = await publicIP.getASN();
                          String isp = await publicIP.getISP();
                          String country = await publicIP.getCountry();
                          String state = await publicIP.getState();
                          String city = await publicIP.getCity();
                          double latitude = await publicIP.getLatitude();
                          double longitude = await publicIP.getLongitude();

                          // 显示获取到的信息
                          showDialog(
                            context: context,
                            builder: (BuildContext context) {
                              return AlertDialog(
                                title: Text("公网IP相关信息"),
                                content: Column(
                                  mainAxisSize: MainAxisSize.min,
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    Text("公网IP: $publicIp"),
                                    Text("ASN: $asn"),
                                    Text("ISP: $isp"),
                                    Text("国家: $country"),
                                    Text("州/省: $state"),
                                    Text("城市: $city"),
                                    Text("经度: $longitude"),
                                    Text("纬度: $latitude"),
                                  ],
                                ),
                                actions: [
                                  TextButton(
                                    child: Text("关闭"),
                                    onPressed: () {
                                      Navigator.of(context).pop();
                                    },
                                  ),
                                ],
                              );
                            },
                          );
                        },
                        child: Text("获取更多详细信息"),
                      )
                    ],
                  );
                }
              } else {
                return CircularProgressIndicator();
              }
            },
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用public_ip插件来获取设备的公网IP地址的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  public_ip: ^0.5.0  # 请注意版本号,这里使用的是0.5.0,你可以根据需要检查最新版本

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

接下来,在你的Flutter应用中,你可以使用以下代码来获取公网IP地址:

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

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

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

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

  @override
  void initState() {
    super.initState();
    _getPublicIP();
  }

  Future<void> _getPublicIP() async {
    try {
      String ip = await PublicIp.getIp();
      setState(() {
        publicIP = ip;
      });
    } catch (e) {
      print("Error fetching public IP: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Public IP Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Public IP:',
                style: TextStyle(fontSize: 20),
              ),
              SizedBox(height: 10),
              Text(
                publicIP ?? 'Loading...',
                style: TextStyle(fontSize: 20),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们首先导入了必要的包:flutter/material.dart用于UI组件,public_ip/public_ip.dart用于获取公网IP地址。
  2. 创建了一个简单的Flutter应用,其中包含一个StatefulWidget
  3. _MyAppState类中,我们定义了一个String? publicIP变量来存储获取的公网IP地址。
  4. initState方法中,我们调用_getPublicIP方法来异步获取公网IP地址。
  5. _getPublicIP方法使用PublicIp.getIp()来获取公网IP地址,并在获取成功后更新publicIP变量的值。
  6. build方法中,我们创建了一个简单的UI,显示"Public IP:“标签和当前获取的公网IP地址(如果尚未获取到,则显示"Loading…”)。

运行这个应用,你应该会看到一个界面,显示正在加载公网IP地址,然后显示实际的公网IP地址。

回到顶部