firebase 物品应该或不应该放在虚空的主页上

2uluyalo  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(120)

我们在两家商店都推出了Flutter应用程序。我们的应用程序启动/启动时间很糟糕,花费的时间太长。人们通常会停留在黑屏上(他们无法到达我们显示视频的闪屏视图),或者等待几秒钟才能看到闪屏视图。
在运行应用程序MyAppMainApp之前,我们示例化了大量库,如FlutterSecureStorage, Firebase, Hive & Hive's DBs
我愿意接受任何建议,以解决我们面临的问题。

// one part of the main.dart
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  lockOrientation();

  SystemChrome.setSystemUIOverlayStyle(
    const SystemUiOverlayStyle(
      statusBarBrightness: Brightness.dark,
      systemNavigationBarColor: AppColors.transparent,
    ),
  );

  storage = const FlutterSecureStorage(
    iOptions: IOSOptions(accessibility: KeychainAccessibility.first_unlock),
    aOptions: AndroidOptions(encryptedSharedPreferences: true),
  );

  await Firebase.initializeApp();
  await Future.wait(
    [
      setupInjector(),
      setupLocator(),
      Hive.initFlutter(),
    ],
  );
  
  // Initializing some hive services to pass Riverpod's provider
  await initModels();
  final services = await initDbServices();
  final downloadServices = await initDownloadDbServices();

  await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kDebugMode);
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
  Isolate.current.addErrorListener(RawReceivePort((pair) async {
    final List<dynamic> errorAndStacktrace = pair;
    await FirebaseCrashlytics.instance.recordError(
      errorAndStacktrace.first,
      errorAndStacktrace.last,
    );
  }).sendPort);

  Platform.isIOS
      ? InAppPurchaseStoreKitPlatform.registerPlatform()
      : !DeviceInfo.isHarmonyOS
          ? InAppPurchaseAndroidPlatform.registerPlatform()
          : null;

  RemoteConfigSettings setting =
      RemoteConfigSettings(minimumFetchInterval: const Duration(hours: 1), fetchTimeout: const Duration(minutes: 1));
  await remoteConfig.setConfigSettings(setting);

  NotificationService.instance.listenPushNotifications?.listen((uri) => deeplinkUri = URI);

  return runZonedGuarded(
    () => ProviderScope(child: runApp(MyApp())),
    FirebaseCrashlytics.instance.recordError,
  );
}
o3imoua4

o3imoua41#

这里有两个问题,一个是代码的加载时间太长,另一个问题是在显示闪屏之前要等待所有内容加载完毕,而不是使用Flutter来显示闪屏,你应该充分利用Flutter引擎加载前***显示的初始屏幕。2这样你的用户就不会在你的应用加载时看到黑屏。flutter_native_splash是一个可以为您生成本机闪屏的软件包,您也可以查看Flutter's docs以获得手动添加闪屏的说明。

相关问题