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),
),
],
),
),
),
);
}
}
在这个示例中:
- 我们首先导入了必要的包:
flutter/material.dart
用于UI组件,public_ip/public_ip.dart
用于获取公网IP地址。 - 创建了一个简单的Flutter应用,其中包含一个
StatefulWidget
。 - 在
_MyAppState
类中,我们定义了一个String? publicIP
变量来存储获取的公网IP地址。 - 在
initState
方法中,我们调用_getPublicIP
方法来异步获取公网IP地址。 _getPublicIP
方法使用PublicIp.getIp()
来获取公网IP地址,并在获取成功后更新publicIP
变量的值。- 在
build
方法中,我们创建了一个简单的UI,显示"Public IP:“标签和当前获取的公网IP地址(如果尚未获取到,则显示"Loading…”)。
运行这个应用,你应该会看到一个界面,显示正在加载公网IP地址,然后显示实际的公网IP地址。