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');
}
}
}