locator.dart 3.99 KB
import 'package:appframe/data/repositories/message/choose_file_handler.dart';
import 'package:appframe/data/repositories/message/choose_image_handler.dart';
import 'package:appframe/data/repositories/message/clipboard_data_handler.dart';
import 'package:appframe/data/repositories/message/device_info_handler.dart';
import 'package:appframe/data/repositories/message/player_handler.dart';
import 'package:appframe/data/repositories/message/recorder_handler.dart';
import 'package:appframe/data/repositories/message/save_to_album_handler.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:appframe/data/repositories/message/storage_handler.dart';
import 'package:appframe/data/repositories/wechat_auth_repository.dart';
import 'package:appframe/services/api_service.dart';
import 'package:get_it/get_it.dart';
import 'package:shared_preferences/shared_preferences.dart';

final getIt = GetIt.instance;

Future<void> setupLocator() async {
  getIt.registerSingleton<SharedPreferences>(await SharedPreferences.getInstance());

  /// 按指令名称注册 message handler
  /// 视情况,对大概率会执行的指令直接加载,对概率较低的指令使用懒加载
  /// 使用懒加载,用户实际用到了才会进行加载
  /// 设备信息
  getIt.registerLazySingleton<MessageHandler>(() => DeviceInfoHandler(), instanceName: 'getDeviceInfoSync');

  /// 本地缓存
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => GetStorageSyncHandler(), instanceName: 'getStorageSync');
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => SetStorageSyncHandler(), instanceName: 'setStorageSync');
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => ClearStorageSyncHandler(), instanceName: 'clearStorageSync');

  /// 剪贴板
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => SetClipboardDataHandler(), instanceName: 'setClipboardData');
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => GetClipboardDataHandler(), instanceName: 'getClipboardData');

  /// 选择图片
  /// 暂未处理参数:sizeType: string[], // 尺寸类型,可多选,compressed=压缩图,original=原图, 默认['original', 'compressed']
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => ChooseImageHandler(), instanceName: 'chooseImage');

  /// 选择文件
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => ChooseFileHandler(), instanceName: 'chooseFile');

  /// 保存文件/视频到相册
  // Android已测试通过
  getIt.registerLazySingleton<MessageHandler>(() => SaveToAlbumHandler(), instanceName: 'saveToAlbum');

  /// 录音
  getIt.registerLazySingleton<MessageHandler>(() => AudioRecorderStartHandler(), instanceName: 'audioRecorderStart');
  getIt.registerLazySingleton<MessageHandler>(() => AudioRecorderPauseHandler(), instanceName: 'audioRecorderPause');
  getIt.registerLazySingleton<MessageHandler>(() => AudioRecorderResumeHandler(), instanceName: 'audioRecorderResume');
  getIt.registerLazySingleton<MessageHandler>(() => AudioRecorderStopHandler(), instanceName: 'audioRecorderStop');
  getIt.registerLazySingleton<MessageHandler>(() => AudioRecorderClearHandler(), instanceName: 'audioRecorderClear');

  /// 播放
  getIt.registerLazySingleton<MessageHandler>(() => AudioPlayHandler(), instanceName: 'audioPlay');
  getIt.registerLazySingleton<MessageHandler>(() => AudioPauseHandler(), instanceName: 'audioPause');
  getIt.registerLazySingleton<MessageHandler>(() => AudioResumeHandler(), instanceName: 'audioResume');
  getIt.registerLazySingleton<MessageHandler>(() => AudioStopHandler(), instanceName: 'audioStop');
  getIt.registerLazySingleton<MessageHandler>(() => AudioClearHandler(), instanceName: 'audioClear');

  /// service
  getIt.registerLazySingleton<ApiService>(() => ApiService(baseUrl: 'https://dev.banxiaoer.net'));

  /// repository
  getIt.registerLazySingleton<WechatAuthRepository>(() => WechatAuthRepository());
}