-1

I'm trying to run my Flutter app on a real iOS device. The app installs successfully, Firebase initializes, and logs show normal navigation (Splash → Onboarding). But the screen becomes completely black after launch.

✔ What works

  • Android build works perfectly and launched on play store
  • A fresh sample Flutter app runs fine on the same iPhone
  • iOS build succeeds (no Xcode errors)
  • Terminal logs show widget navigation
  • No crash logs appear

✔ What I already tried

  • flutter clean
  • Deleted Pods + Podfile.lock + re-installed pods
  • Removed firebase_messaging (using free iOS developer account)
  • Updated Info.plist with required permissions
  • Cleaned AppDelegate.swift (FirebaseCore only)
  • Deleted the app from device & reinstalled
  • Restarted iPhone

Still the same black screen.


So, What are the common reasons a Flutter app shows a black screen only on iOS, even though:

  • Build succeeds
  • Logs show widgets loading
  • No exceptions are thrown
  • A simple Flutter app runs fine
  • Android build works

Is this related to iOS plugin registration, LaunchScreen storyboard, missing permissions, or iOS folder corruption?

1
  • 1
    Was this question generated by AI? Commented 2 days ago

1 Answer 1

0

Please verify the iOS permissions in Info.plist. A missing permission (like camera, photos, location, Bluetooth, microphone, or tracking) can cause iOS to block Flutter from rendering, resulting in a black screen even with normal logs

Add the necessary NS*UsageDescription keys depending on the plugins your app uses. Many plugins require these even if you don’t call them manually

Also double-check LaunchScreen.storyboard and consider regenerating the iOS folder if needed

You should check the following:

If any plugin tries to access a service (camera, location, notifications, Bluetooth, network info, etc.) without a permission entry, iOS may block the rendering engine — leading to a black screen with no crash.

Please confirm that these keys exist (depending on what your app uses):

<key>NSCameraUsageDescription</key>
<string>Camera access is required.</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>Photo library access is required.</string>

<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required.</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>Location access is required.</string>

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Bluetooth access is required.</string>

<key>NSUserTrackingUsageDescription</key>
<string>Tracking permission is required.</string>

Even if you don’t manually use these features, some plugins (like image_picker, geolocator, firebase, etc.) request them internally. Missing permissions often cause a freeze before the first frame is drawn

Sometimes a misconfigured iOS folder causes a black screen

flutter create .
rm -rf ios/Pods ios/Podfile.lock
cd ios
pod install

If a wrong constraint or unsupported asset is used in the Launch Screen, the screen might get stuck showing black.

Make sure the LaunchScreen has:

  • A simple image or logo

  • No unsupported constraints

  • No wrong asset names

    happy coding :)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.