我们在两家商店都推出了Flutter应用程序。我们的应用程序启动/启动时间很糟糕,花费的时间太长。人们通常会停留在黑屏上(他们无法到达我们显示视频的闪屏视图),或者等待几秒钟才能看到闪屏视图。
在运行应用程序MyApp
或MainApp
之前,我们示例化了大量库,如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,
);
}
1条答案
按热度按时间o3imoua41#
这里有两个问题,一个是代码的加载时间太长,另一个问题是在显示闪屏之前要等待所有内容加载完毕,而不是使用Flutter来显示闪屏,你应该充分利用Flutter引擎加载前***显示的初始屏幕。2这样你的用户就不会在你的应用加载时看到黑屏。flutter_native_splash是一个可以为您生成本机闪屏的软件包,您也可以查看Flutter's docs以获得手动添加闪屏的说明。