Flutter局域网IP获取插件intranet_ip的使用

Flutter局域网IP获取插件intranet_ip的使用

通过使用 intranet_ip 插件,可以方便地获取设备在局域网内的IP地址。以下是详细的使用说明。

使用方法

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

dependencies:
  intranet_ip: ^0.1.0

然后,运行 flutter pub get 来安装该插件。

接下来,在你的 Dart 文件中导入 intranet_ip 包,并使用以下代码来获取局域网IP地址:

import 'package:intranet_ip/intranet_ip.dart';

void main() async {
  // 获取IPv4地址
  final ip = await intranetIpv4();
  
  // 打印完整的IP地址信息
  print(ip);
  
  // 打印原始的IP地址
  print(ip.rawAddress);
}

完整示例Demo

以下是一个完整的示例代码,展示了如何使用 intranet_ip 插件来获取局域网IP地址。

import 'package:flutter/material.dart';
import 'package:intranet_ip/intranet_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获取'),
        ),
        body: Center(
          child: FutureBuilder(
            future: intranetIpv4(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                if (snapshot.hasError) {
                  return Text('错误: ${snapshot.error}');
                }
                final ip = snapshot.data;
                return Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Text('获取到的IP地址:'),
                    Text(ip.toString(), style: TextStyle(fontSize: 20)),
                    Text('原始IP地址:'),
                    Text(ip.rawAddress, style: TextStyle(fontSize: 20)),
                  ],
                );
              } else {
                return CircularProgressIndicator();
              }
            },
          ),
        ),
      ),
    );
  }
}

更多关于Flutter局域网IP获取插件intranet_ip的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter局域网IP获取插件intranet_ip的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用intranet_ip插件来获取局域网IP地址的代码示例。这个插件可以帮助你获取设备的本地IP地址,这在许多应用场景中都非常有用,比如局域网内的设备通信。

首先,确保你已经在pubspec.yaml文件中添加了intranet_ip依赖:

dependencies:
  flutter:
    sdk: flutter
  intranet_ip: ^latest_version  # 请替换为实际的最新版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用intranet_ip插件来获取局域网IP地址:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? localIP;

  @override
  void initState() {
    super.initState();
    _getLocalIP();
  }

  Future<void> _getLocalIP() async {
    try {
      String? ip = await IntranetIp.getLocalIP();
      setState(() {
        localIP = ip;
      });
    } catch (e) {
      print("Error getting local IP: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Local IP Address'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Local IP Address:',
                style: TextStyle(fontSize: 20),
              ),
              SizedBox(height: 20),
              Text(
                localIP ?? 'Loading...',
                style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,该应用在启动时会调用_getLocalIP函数来获取设备的本地IP地址。获取到的IP地址会显示在应用的界面上。

代码解释:

  1. 依赖导入:导入flutter/material.dart用于UI构建,导入intranet_ip/intranet_ip.dart用于获取本地IP。

  2. 主函数void main()函数是应用的入口,它运行一个MyApp实例。

  3. MyApp类:这是一个有状态的widget,它持有本地IP地址的状态。

  4. _MyAppState类:这是MyApp的状态类。在initState方法中,我们调用_getLocalIP方法来获取本地IP地址,并在获取成功后更新状态。

  5. _getLocalIP方法:这是一个异步方法,它调用IntranetIp.getLocalIP()来获取本地IP地址,并处理可能发生的异常。

  6. build方法:这是构建UI的方法。它显示一个包含本地IP地址的文本。如果IP地址尚未获取,则显示“Loading…”。

运行这个应用后,你应该能够在设备的屏幕上看到本地IP地址。如果获取IP地址失败,控制台将打印出错误信息。

希望这个示例对你有帮助!如果你有更多问题,欢迎继续提问。

回到顶部