setVirtualBackgroundByIndex method

Future<void> setVirtualBackgroundByIndex(
  1. int index
)

Implementation

Future<void> setVirtualBackgroundByIndex(int index) async {
  _trtcStreamInfoObs.updateCurrentUnrealBGIndex(index);
  final rememberVirtualBackgroundConfig =
      getConfig().basicConfig?.rememberVirtualBackgroundConfig ?? false;
  final unrealBgData = getVirtualBackgroundData().getItemByIndex(index);
  if (unrealBgData == null) {
    TCICLog.error(
      "unrealBgData is null",
      actionModule: ActionModule.tcicController.name,
      actionName: ActionName.setVirtualBackgroundByIndex.name,
    );
    return;
  }
  final bgType = unrealBgData.bgType;
  final bgUrl = unrealBgData.bgUrl;
  //1 颜色、2 图像、3 虚化
  final backgroundType =
      bgType == UnrealBgType.path
          ? 2
          : bgType == UnrealBgType.blur
          ? 3
          : 1;
  final enable = bgType != UnrealBgType.none;
  final absolutePath = await getAbsolutePathFromAsset(bgUrl);
  setVirtualBackground(
    path: absolutePath,
    backgroundType: backgroundType,
    blurLevel: 3,
    color: 0,
    enable: enable,
  );
  try {
    if (rememberVirtualBackgroundConfig) {
      final virtualBackgroundConfig = {
        "index": index,
        "key": unrealBgData.key,
      };
      final virtualBackgroundConfigJson = jsonEncode(virtualBackgroundConfig);
      sharedPreferences.setString(
        "virtualBackgroundConfig-${_config.userId}",
        virtualBackgroundConfigJson,
      );
    }
  } catch (_) {}
}