fix(local_send): fix can't find ip at ethernet mode

Closes #44
This commit is contained in:
ZhuJHua
2024-12-11 02:43:20 +08:00
parent faaf790f84
commit de2f1f4c2f
8 changed files with 43 additions and 45 deletions

View File

@@ -1,11 +1,35 @@
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:get/get.dart';
import 'package:network_info_plus/network_info_plus.dart';
import 'local_send_state.dart';
Future<String?> getDeviceIP() async {
// 获取当前的连接状态
var connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult.isNotEmpty) {
try {
// 获取所有网络接口
for (var interface in await NetworkInterface.list()) {
// 检查接口是否有 IPv4 地址
for (var address in interface.addresses) {
if (address.type == InternetAddressType.IPv4) {
return address.address; // 返回第一个有效的 IPv4 地址
}
}
}
} catch (e) {
print('Failed to get IP address: $e');
}
}
return null; // 未连接网络或无法获取 IP 地址
}
class LocalSendLogic extends GetxController {
final LocalSendState state = LocalSendState();
final networkInfo = NetworkInfo();
@override
void onReady() async {
@@ -14,8 +38,7 @@ class LocalSendLogic extends GetxController {
}
Future<void> getWifiInfo() async {
state.deviceIpAddress = (await networkInfo.getWifiIP()) ?? '无法获取';
state.wifiSSID = (await networkInfo.getWifiName()) ?? '无法获取';
state.deviceIpAddress = (await getDeviceIP()) ?? '无法获取';
update(['WifiInfo']);
}

View File

@@ -4,8 +4,8 @@ import 'dart:io';
import 'package:get/get.dart';
import 'package:mood_diary/common/models/isar/category.dart';
import 'package:mood_diary/common/models/isar/diary.dart';
import 'package:mood_diary/components/local_send/local_send_logic.dart';
import 'package:mood_diary/utils/utils.dart';
import 'package:network_info_plus/network_info_plus.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf/shelf_io.dart';
import 'package:shelf_multipart/shelf_multipart.dart';
@@ -18,12 +18,10 @@ class LocalSendServerLogic extends GetxController {
late RawDatagramSocket socket;
HttpServer? httpServer;
late final networkInfo = NetworkInfo();
@override
void onReady() async {
socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, state.scanPort);
state.serverIp = await networkInfo.getWifiIP();
state.serverIp = await getDeviceIP();
update();
if (state.serverIp != null) {
await startBroadcastListener();

View File

@@ -1,7 +1,6 @@
import 'package:get/get.dart';
class LocalSendState {
String wifiSSID = '';
String deviceIpAddress = '';

View File

@@ -34,13 +34,15 @@ class LocalSendComponent extends StatelessWidget {
onPressed: () {
logic.getWifiInfo();
},
label: Text('SSID : ${state.wifiSSID}'),
label: Text('IP : ${state.deviceIpAddress}'),
),
ActionChip(
onPressed: () {
logic.getWifiInfo();
},
label: Text('IP : ${state.deviceIpAddress}'),
onPressed: () {},
label: Text('扫描端口: ${state.scanPort}'),
),
ActionChip(
onPressed: () {},
label: Text('传输端口: ${state.transferPort}'),
),
],
);
@@ -128,12 +130,7 @@ class LocalSendComponent extends StatelessWidget {
builder: (_) {
return Visibility(
visible: state.showInfo,
child: Wrap(
spacing: 8.0,
runSpacing: 8.0,
alignment: WrapAlignment.spaceEvenly,
children: [buildWifiInfo(), buildPortInfo()],
),
child: buildWifiInfo(),
);
}),
GetBuilder<LocalSendLogic>(

View File

@@ -21,7 +21,6 @@ import isar_flutter_libs
import local_auth_darwin
import media_kit_libs_macos_video
import media_kit_video
import network_info_plus
import objectbox_flutter_libs
import package_info_plus
import path_provider_foundation
@@ -53,7 +52,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin"))
MediaKitLibsMacosVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin"))
MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin"))
NetworkInfoPlusPlugin.register(with: registry.registrar(forPlugin: "NetworkInfoPlusPlugin"))
ObjectboxFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "ObjectboxFlutterLibsPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))

View File

@@ -1594,22 +1594,6 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.0"
network_info_plus:
dependency: "direct main"
description:
name: network_info_plus
sha256: bf9e39e523e9951d741868dc33ac386b0bc24301e9b7c8a7d60dbc34879150a8
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.1.1"
network_info_plus_platform_interface:
dependency: transitive
description:
name: network_info_plus_platform_interface
sha256: b7f35f4a7baef511159e524499f3c15464a49faa5ec10e92ee0bce265e664906
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.1"
nm:
dependency: transitive
description:

View File

@@ -69,7 +69,6 @@ dependencies:
smooth_page_indicator: 1.2.0+3
table_calendar: 3.1.2
unicons: 3.0.0
network_info_plus: 6.1.1
encrypt: 5.0.3
objectbox: 4.0.3
faker: 2.2.0

View File

@@ -35,8 +35,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin"));
BitsdojoWindowPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("BitsdojoWindowPlugin"));
ConnectivityPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
ConnectivityPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
DynamicColorPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("DynamicColorPluginCApi"));
FcNativeVideoThumbnailPluginCApiRegisterWithRegistrar(
@@ -45,8 +45,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("FileSelectorWindows"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
GalPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GalPluginCApi"));
GalPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GalPluginCApi"));
GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows"));
IsarFlutterLibsPluginRegisterWithRegistrar(
@@ -63,8 +63,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
RecordWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("RecordWindowsPluginCApi"));
RivePluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("RivePlugin"));
RivePluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("RivePlugin"));
ScreenBrightnessWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(