my flutter app runs perfectly on android studio and xcode but after uploading on test flight if shows white screen. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>BGTaskSchedulerPermittedIdentifiers</key> <array> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> </array> <key>CADisableMinimumFrameDurationOnPhone</key><true/> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> <string>premium</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIcons</key> <dict/> <key>CFBundleIcons~ipad</key> <dict/> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleLocalizations</key> <array> <string>en</string> </array> <key>CFBundleName</key> <string>premium</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>$(MARKETING_VERSION)</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>$(CURRENT_PROJECT_VERSION)</string> <key>FirebaseAppDelegateProxyEnabled</key><false/> <key>FirebaseCrashlyticsCollectionEnabled</key><true/> <key>LSApplicationQueriesSchemes</key> <array> <string>https</string> <string>http</string> </array> <key>LSRequiresIPhoneOS</key><true/> <key>LSSupportsOpeningDocumentsInPlace</key><true/> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> <array> <string>fetch</string> <string>processing</string> <string>remote-notification</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> <string>Main</string> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> <key>UIViewControllerBasedStatusBarAppearance</key><false/> <key>UIApplicationSupportsIndirectInputEvents</key><true/> </dict> </plist>
import UIKit import Flutter import GoogleMaps import Firebase @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {GMSServices.provideAPIKey("***") FirebaseApp.configure() GeneratedPluginRegistrant.register(with: self) if #available(iOS 10.0, *) {UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { _, _ in}} else {let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)application.registerUserNotificationSettings(settings)} application.registerForRemoteNotifications() return super.application(application, didFinishLaunchingWithOptions: launchOptions)}}
name: *** description: *** version: 1.0.18+18 environment: sdk: ">=2.13.4 <3.0.0" dependencies: flutter: sdk: flutter http: ^0.13.4 connectivity_plus: ^2.3.8 easy_localization: ^3.0.0 easy_localization_loader: ^1.0.0 get_it: ^7.2.0 prefs: ^4.1.0+3 dio: ^5.3.1 oktoast: ^3.1.5 modal_bottom_sheet: ^3.0.0-pre full_screen_image_null_safe: ^2.0.0 permission_handler: ^10.0.0 permission_handler_platform_interface: ^3.7.0 firebase_core: ^2.15.0 firebase_messaging: ^14.6.5 flutter_local_notifications: ^9.5.3+1 firebase_crashlytics: ^3.3.4 firebase_analytics: ^10.4.4 google_maps_flutter: ^2.1.2 google_maps_flutter_web: ^0.5.3 google_maps_flutter_platform_interface: ^2.1.5 flutter_cupertino_datetime_picker: ^3.0.0 dependency_overrides: meta: ^1.7.0 dev_dependencies: flutter_test: sdk: flutter flutter: uses-material-design: true assets: - assets/images/ - assets/locale/
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); await Prefs.init(); await setupLocator(); LocalNotificationService.initialize(); await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); LoginRequest.deviceToken = (await FirebaseMessaging.instance.getToken())!; NotificationSettings settings = await FirebaseMessaging.instance.requestPermission(alert: true, badge: true, sound: true); if (settings.authorizationStatus == AuthorizationStatus.authorized) { FirebaseMessaging.onMessage.listen(_firebaseMessagingForegroundHandler); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);} else {***} FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message{***}); FirebaseMessaging.instance.getInitialMessage().then((message) {***}); runApp(EasyLocalization( child: PremiumApp(), supportedLocales: [Locale('en'), Locale('ar'), Locale('fr')], path: 'assets/locale', useOnlyLangCode: true, fallbackLocale: Locale('en'), saveLocale: true, startLocale: "en",),);} Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {***} Future<void> _firebaseMessagingForegroundHandler(RemoteMessage message) async {***}
class PremiumApp extends StatefulWidget { static final GetIt servicesLocator = GetIt.instance; @override PremiumAppViewState createState() =>PremiumAppViewState(); } class PremiumAppViewState extends State<PremiumApp> with WidgetsBindingObserver{ @override void initState() { WidgetsBinding.instance.addObserver(this); super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]);});} @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override Widget build(BuildContext context) { return OKToast( child: new MaterialApp( useInheritedMediaQuery: true, localizationsDelegates: context.localizationDelegates, supportedLocales: context.supportedLocales, locale: context.locale, navigatorKey: NavigationService.navigationKey!, title: "***", debugShowCheckedModeBanner: false, theme: new ThemeData(visualDensity: VisualDensity.adaptivePlatformDensity, fontFamily: 'Roboto', colorScheme: ***, home: new SplashView(true), builder: (context, child) { return MediaQuery(data: MediaQuery.of(context).copyWith( textScaleFactor: MediaQuery.of(context).textScaleFactor.clamp(1.0, 1.25)), child: child!); }, navigatorObservers: [FirebaseAnalyticsObserver(analytics: PremiumApp.servicesLocator<FirebaseAnalytics>()), ],),);}} class MyCustomRoute<T> extends MaterialPageRoute<T> { bool isInitialRoute; MyCustomRoute({required this.isInitialRoute, required WidgetBuilder builder, required RouteSettings settings}):super(builder: builder, settings: settings); @override Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) { if (isInitialRoute) {return child;} else {return new FadeTransition(opacity: animation, child: child); }}}