Platform-Specific Troubleshooting

Detailed solutions for platform-specific issues in Remind Tools.

iOS Issues

Build & Deployment

Runtime Issues

// iOS-specific code
if (Platform.isIOS) {
  // Request permissions
  await Permission.appTrackingTransparency.request();
  
  // iOS-specific styling
  SystemChrome.setSystemUIOverlayStyle(
    SystemUiOverlayStyle.light,
  );
}

Simulator Issues

IssueSolution
Simulator not foundxcrun simctl list devices
Reset simulatorDevice > Erase All Content
Slow performanceDisable “Debug > Slow Animations”
Network issuesReset network settings

Android Issues

Build Configuration

// android/gradle.properties
org.gradle.jvmargs=-Xmx4G
android.useAndroidX=true
android.enableJetifier=true

// android/app/build.gradle
android {
  compileSdkVersion 34
  
  defaultConfig {
    minSdkVersion 21
    targetSdkVersion 34
    multiDexEnabled true
  }
}

Permission Issues

<!-- android/app/src/main/AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Multidex Issues

Required for apps with >64K methods.
// android/app/build.gradle
dependencies {
  implementation 'androidx.multidex:multidex:2.0.1'
}

// Enable multidex
defaultConfig {
  multiDexEnabled true
}

Web Issues

CORS Problems

// Configure CORS for web
class CorsConfiguration {
  static void configure() {
    if (kIsWeb) {
      // Add CORS headers
      HttpOverrides.global = WebHttpOverrides();
    }
  }
}

// index.html
<script>
  // Handle CORS in service worker
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('flutter_service_worker.js');
  }
</script>

Web Renderer Selection

RendererUse CaseCommand
HTMLBetter compatibility--web-renderer html
CanvasKitBetter performance--web-renderer canvaskit
AutoLet Flutter decide--web-renderer auto

PWA Configuration

// web/manifest.json
{
  "name": "Remind Tools",
  "short_name": "Remind",
  "start_url": ".",
  "display": "standalone",
  "background_color": "#0175C2",
  "theme_color": "#0175C2",
  "orientation": "portrait-primary",
  "icons": [
    {
      "src": "icons/Icon-192.png",
      "sizes": "192x192",
      "type": "image/png"
    }
  ]
}

Desktop Issues

macOS

Windows

# windows/runner/Runner.rc
IDI_APP_ICON ICON "resources\\app_icon.ico"

# Build for Windows
flutter build windows --release

# Create installer with Inno Setup
iscc windows/installer.iss

Linux

# Install dependencies
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev

# Build
flutter build linux --release

# Create AppImage
make appimage

# Create Snap
snapcraft

Cross-Platform Compatibility

Platform Detection

import 'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;

class PlatformHelper {
  static bool get isIOS => !kIsWeb && Platform.isIOS;
  static bool get isAndroid => !kIsWeb && Platform.isAndroid;
  static bool get isWeb => kIsWeb;
  static bool get isMacOS => !kIsWeb && Platform.isMacOS;
  static bool get isWindows => !kIsWeb && Platform.isWindows;
  static bool get isLinux => !kIsWeb && Platform.isLinux;
  static bool get isMobile => isIOS || isAndroid;
  static bool get isDesktop => isMacOS || isWindows || isLinux;
}

Conditional Imports

// platform_service.dart
export 'platform_service_stub.dart'
  if (dart.library.io) 'platform_service_io.dart'
  if (dart.library.html) 'platform_service_web.dart';

Performance Optimization

Platform-Specific Optimizations

iOS

  • Metal rendering
  • Precompiled frameworks
  • App thinning

Android

  • R8/ProGuard
  • App bundles
  • APK splits

Web

  • Tree shaking
  • Code splitting
  • Service workers

Desktop

  • Native compilation
  • Hardware acceleration
  • Window management