diff --git a/lib/main.dart b/lib/main.dart index 45cca58..f8c95e3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'dart:io' show Platform; +import 'package:flutter/foundation.dart' show TargetPlatform, defaultTargetPlatform, kIsWeb; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; @@ -158,7 +158,7 @@ class _MeshCoreSarAppState extends State { /// Shows notification if update is available Future _checkForUpdates() async { // Only check for updates on Android - if (!Platform.isAndroid) { + if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { debugPrint('[UpdateChecker] Skipping update check (not Android)'); return; } @@ -324,7 +324,7 @@ class _MeshCoreSarAppState extends State { // Wrap in SafeArea for Android only to fix navigation bar overlap (API ≥36) // iOS doesn't need SafeArea wrapping (causes extra black space at bottom) - if (Platform.isAndroid) { + if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) { return SafeArea( left: false, right: false, diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 64128b2..f7098ab 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -1,5 +1,5 @@ -import 'dart:io' show Platform; import 'dart:typed_data'; +import 'package:flutter/foundation.dart' show TargetPlatform, defaultTargetPlatform, kIsWeb; import 'package:flutter/material.dart'; import 'package:flutter_avif/flutter_avif.dart'; import 'package:image_picker/image_picker.dart'; @@ -470,7 +470,7 @@ class _SettingsScreenState extends State { /// Check for app updates and show notification or dialog Future _checkForUpdates() async { // Only on Android - if (!Platform.isAndroid) { + if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( @@ -1213,8 +1213,10 @@ class _SettingsScreenState extends State { ), ]), - _buildSectionHeader('Network Sharing'), - const ConnectionModeSelector(), + if (!kIsWeb) ...[ + _buildSectionHeader('Network Sharing'), + const ConnectionModeSelector(), + ], _buildSectionHeader(AppLocalizations.of(context)!.permissionsSection), _buildSettingsCard([ @@ -1320,7 +1322,7 @@ class _SettingsScreenState extends State { onTap: () => _showAboutDialog(), ), ]), - if (Platform.isAndroid) + if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) Padding( padding: const EdgeInsets.only(top: 8), child: FilledButton.icon( diff --git a/lib/services/build_info_service.dart b/lib/services/build_info_service.dart index 2682bdc..3bc526e 100644 --- a/lib/services/build_info_service.dart +++ b/lib/services/build_info_service.dart @@ -1,6 +1,5 @@ -import 'dart:io' show Platform; +import 'package:flutter/foundation.dart' show TargetPlatform, defaultTargetPlatform, debugPrint, kIsWeb; import 'package:flutter/services.dart'; -import 'package:flutter/foundation.dart'; /// Service for accessing build information from native platform code /// Currently supports Android only - returns "unknown" for other platforms @@ -25,7 +24,7 @@ class BuildInfoService { } // Only Android has the platform channel implementation - if (!Platform.isAndroid) { + if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { debugPrint('[BuildInfoService] Not on Android platform, returning "unknown"'); _cachedCommitHash = 'unknown'; return _cachedCommitHash!; diff --git a/lib/widgets/connection_mode_selector.dart b/lib/widgets/connection_mode_selector.dart index 22f467b..6d61f6e 100644 --- a/lib/widgets/connection_mode_selector.dart +++ b/lib/widgets/connection_mode_selector.dart @@ -1,4 +1,5 @@ import 'dart:io'; +import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; @@ -25,6 +26,10 @@ class _ConnectionModeSelectorState extends State { } Future _loadLocalIPs() async { + if (kIsWeb) { + return; + } + final Set ipsSet = {}; try {