如何在Dart / Flutter中获取设备IP

我目前正在编写一个应用,用户需要知道其手机/平板电脑的IP地址。我在哪里可以找到此信息?

我只想知道本地IP地址是什么,例如192.168.x.xxx,而不是路由器的公共IP地址。

到目前为止,我似乎只能找到InternetAddress.anyIPv4InternetAddress.loopbackIPv4。回送地址不是我想要的,因为它是127.0.0.1。

回答:

我想你是说当前连接的Wifi网络的本地IP,对不对?

检查‘dart:io’中的NetworkInterface。

**编辑:Android不支持NetworkInterface.list,如稍后

Mahesh所指出的。除了答案中建议的wifi包之外,还有一个PR可以将其带到连接插件中。

您可能还想使用flutter /plugins中的连接插件检查Wifi是否可用。

在下面,有一个使用NetworkInferface的简单示例。

import 'dart:io';

import 'package:flutter/material.dart';

main() {

runApp(new MyApp());

}

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return new MaterialApp(

title: "Network Interface example",

home: new NetworkInterfaceWidget(),

);

}

}

class NetworkInterfaceWidget extends StatefulWidget {

@override

_NetworkInterfaceState createState() => new _NetworkInterfaceState();

}

class _NetworkInterfaceState extends State<NetworkInterfaceWidget> {

String _networkInterface;

@override

initState() {

super.initState();

NetworkInterface.list(includeLoopback: false, type: InternetAddressType.any)

.then((List<NetworkInterface> interfaces) {

setState( () {

_networkInterface = "";

interfaces.forEach((interface) {

_networkInterface += "### name: ${interface.name}\n";

int i = 0;

interface.addresses.forEach((address) {

_networkInterface += "${i++}) ${address.address}\n";

});

});

});

});

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text("NetworkInterface"),

),

body: Container(

padding: EdgeInsets.all(10.0),

child: Text("Only in iOS.. :(\n\nNetworkInterface:\n $_networkInterface"),

),

);

}

}

以上是 如何在Dart / Flutter中获取设备IP 的全部内容, 来源链接: utcz.com/qa/435994.html

回到顶部