Flutter IP地址处理插件idkit_ip的使用

Flutter IP地址处理插件idkit_ip的使用

该插件主要用于获取用户的公网IP地址,方便扩展。主要功能包括获取IPv4和IPv6两种公网地址。

获取IPv4用户公网地址

String ip1 = await IDKitIp.getIPv4(format: IPFormat.json);
print(ip1); // {'ip':'204.2.250.22'}

String ip = await IDKitIp.getIPv4();
print(ip); // 204.2.250.22

获取IPv6用户公网地址

String ip2 = await IDKitIp.getIPv6(format: IPFormat.json);
print(ip2); // {'ip':'204.2.250.22'}

String ip3 = await IDKitIp.getIPv6();
print(ip3); // 204.2.250.22

重要提示

要查看完整的使用示例,请参阅example项目。

完整示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中使用idkit_ip插件来获取用户的公网IP地址。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: "获取用户的公网IP"),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('公网IPv4'),
            const SizedBox(height: 10),
            StreamBuilder<String>(
              stream: IDKitIp.getIPv4().asStream(),
              builder: (_, AsyncSnapshot<String> snapshot) {
                if (snapshot.connectionState == ConnectionState.waiting) {
                  return const Text("正在获取用户的公网IP...");
                }

                if (snapshot.hasError) {
                  return const Text("获取用户的公网IP失败");
                }
                return Text('公网-IPv4:   ${snapshot.data}');
              },
            ),
            StreamBuilder<String>(
              stream: IDKitIp.getIPv4(format: IPFormat.json).asStream(),
              builder: (_, AsyncSnapshot<String> snapshot) {
                if (snapshot.connectionState == ConnectionState.waiting) {
                  return const Text("正在获取用户的公网IP...");
                }

                if (snapshot.hasError) {
                  return const Text("获取用户的公网IP失败");
                }
                return Text('公网-IPv4-JSON:   ${snapshot.data}');
              },
            ),
            const SizedBox(height: 20),
            const Text('公网IPv6'),
            const SizedBox(height: 10),
            StreamBuilder<String>(
              stream: IDKitIp.getIPv6().asStream(),
              builder: (_, AsyncSnapshot<String> snapshot) {
                if (snapshot.connectionState == ConnectionState.waiting) {
                  return const Text("正在获取用户的公网IP...");
                }

                if (snapshot.hasError) {
                  return const Text("获取用户的公网IP失败");
                }
                return Text('公网-IPv6:   ${snapshot.data}');
              },
            ),
            StreamBuilder<String>(
              stream: IDKitIp.getIPv6(format: IPFormat.json).asStream(),
              builder: (_, AsyncSnapshot<String> snapshot) {
                if (snapshot.connectionState == ConnectionState.waiting) {
                  return const Text("正在获取用户的公网IP...");
                }

                if (snapshot.hasError) {
                  return const Text("获取用户的公网IP失败");
                }
                return Text('公网-IPv6-JSON:  ${snapshot.data}');
              },
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


idkit_ip 是一个 Flutter 插件,用于获取设备的 IP 地址。它可以帮助开发者轻松地获取设备的本地 IP 地址或公网 IP 地址。以下是如何使用 idkit_ip 插件的基本步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 idkit_ip 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  idkit_ip: ^0.0.1  # 请使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入 idkit_ip 插件:

import 'package:idkit_ip/idkit_ip.dart';

3. 获取 IP 地址

你可以使用 idkit_ip 插件来获取设备的本地 IP 地址或公网 IP 地址。

获取本地 IP 地址

void getLocalIp() async {
  try {
    String? localIp = await IdkitIp.localIp;
    print('Local IP: $localIp');
  } catch (e) {
    print('Error getting local IP: $e');
  }
}

获取公网 IP 地址

void getPublicIp() async {
  try {
    String? publicIp = await IdkitIp.publicIp;
    print('Public IP: $publicIp');
  } catch (e) {
    print('Error getting public IP: $e');
  }
}

4. 使用示例

你可以将上述方法集成到你的 Flutter 应用中,例如在按钮点击事件中调用这些方法:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('IP Address Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () => getLocalIp(),
                child: Text('Get Local IP'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () => getPublicIp(),
                child: Text('Get Public IP'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void getLocalIp() async {
    try {
      String? localIp = await IdkitIp.localIp;
      print('Local IP: $localIp');
    } catch (e) {
      print('Error getting local IP: $e');
    }
  }

  void getPublicIp() async {
    try {
      String? publicIp = await IdkitIp.publicIp;
      print('Public IP: $publicIp');
    } catch (e) {
      print('Error getting public IP: $e');
    }
  }
}
回到顶部