setupUI function

Future<void> setupUI({
  1. String? openAiKey,
})

Implementation

Future<void> setupUI({
  String? openAiKey,
}) async {
  WidgetsFlutterBinding.ensureInitialized();

  if (Platform.isIOS) {
    VitGptFlutterConfiguration.logger
        .d('Disabling colors on logs since we are in IOS');
    VitGptDartConfiguration.logger = Logger(
      printer: SimplePrinter(colors: false),
    );
  }

  var sp = await SharedPreferences.getInstance();
  GetIt.I.registerSingleton(sp);

  // Setting up local storage
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String dbPath = '${appDocDir.path}${Platform.pathSeparator}local_storage.db';
  Database db = sqlite3.open(dbPath);
  var localStorageRepository = LocalStorageRepository(sp, db);
  await localStorageRepository.prepare();
  GetIt.I.registerSingleton(localStorageRepository);
  DynamicFactories.localStorage = () => LocalStorageRepository(sp, db);

  // Setting input and output audio classes.
  DynamicFactories.recorder = () => VitAudioRecorder();
  DynamicFactories.simplePlayer = (file) {
    return VitAudioPlayer(
      audioPath: file.path,
      randomizeVolumeStream: true,
    ).getPlayer();
  };

  VitGptDartConfiguration.internalFilesDirectory = appDocDir;

  VitGptDartConfiguration.useHighQualityTts = false;
  VitGptDartConfiguration.ttsFormat = AudioFormat.mp3;

  // Setting the API token to the http client.
  if (openAiKey != null) {
    await updateApiToken(openAiKey);
  }
}