initU function

Future<void> initU({
  1. String? baseUrl,
  2. String? apiKey,
  3. String defaultPhoneCountryCode = "IR",
  4. int snackBarDuration = 4,
  5. ULoadingSettings loadingSettings = const ULoadingSettings(blurAmount: 1, overlayColor: Colors.black12),
  6. List<DeviceOrientation> deviceOrientations = const <DeviceOrientation>[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown],
})

Starts u (storage, device/app/network info, notifications, loading overlay, web updates); locks portrait unless you pass deviceOrientations. Call once before runApp. await initU(baseUrl: "https://api.x.com");

Implementation

Future<void> initU({
  String? baseUrl,
  String? apiKey,
  String defaultPhoneCountryCode = "IR",
  int snackBarDuration = 4,
  ULoadingSettings loadingSettings = const ULoadingSettings(blurAmount: 1, overlayColor: Colors.black12),
  List<DeviceOrientation> deviceOrientations = const <DeviceOrientation>[
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ],
}) async {
  U.baseUrl = baseUrl ?? "";
  U.apiKey = apiKey ?? "";
  U.defaultPhoneCountryCode = defaultPhoneCountryCode;
  U.snackBarDuration = snackBarDuration;
  WidgetsFlutterBinding.ensureInitialized();
  await Future.wait(<Future<void>>[
    if (!kIsWeb) SystemChrome.setPreferredOrientations(deviceOrientations),
    UStorage.init(),
    UFileStorage.init(),
    // One native round trip fills all three.
    UDevice.init(),
    UPackage.init(),
    UConnectivity.init(),
  ]);
  // Needs the package name (Windows app id), so after UPackage.
  await UNotification.init();
  ULoading.initialize(key: navigatorKey, settings: loadingSettings);
  UWebUpdate.startWatching(silent: true);
}