Flutter获取公网IP插件get_public_ip的使用
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
更多关于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'),
),
],
),
),
),
);
}
}
在这个示例中:
- 我们导入了必要的包:
flutter/material.dart
用于UI构建,get_public_ip/get_public_ip.dart
用于获取公网IP。 - 创建了一个
MyApp
有状态小部件,其中包含一个状态变量publicIP
来存储获取的公网IP地址,以及一个errorMessage
来存储可能的错误信息。 - 在
build
方法中,我们构建了一个简单的UI,包括一个显示公网IP的文本(如果已获取),一个显示错误信息的文本(如果有),以及一个按钮来触发获取公网IP的操作。 - 按钮的
onPressed
回调中,我们使用GetPublicIP.ip
异步获取公网IP地址。获取成功后,更新publicIP
状态;如果捕获到异常,则更新errorMessage
状态。
这个示例提供了一个完整的工作流程,从依赖添加、状态管理到UI展示,展示了如何在Flutter应用中使用get_public_ip
插件来获取用户的公网IP地址。