mirror of
https://github.com/ZhuJHua/moodiary.git
synced 2026-04-05 16:39:01 +08:00
@@ -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']);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class LocalSendState {
|
||||
String wifiSSID = '';
|
||||
|
||||
String deviceIpAddress = '';
|
||||
|
||||
|
||||
@@ -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>(
|
||||
|
||||
@@ -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"))
|
||||
|
||||
16
pubspec.lock
16
pubspec.lock
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user