getBoShi12 function

List<StarName> getBoShi12(
  1. String solarDateStr,
  2. GenderName gender
)

博士12神。

从禄存起,阳男阴女顺行,阴男阳女逆行。安博士、力士、青龙、小耗、将军、奏书、飞廉、喜神、病符、大耗、伏兵、官府。

@param solarDateStr 阳历日期字符串 @param gender 性别【男|女】 @returns 博士12神从寅宫开始的顺序

Implementation

List<StarName> getBoShi12(String solarDateStr, GenderName gender) {
  final yearly =
      getHeavenlyStemAndEarthlyBranchSolarDate(
        solarDateStr,
        0,
        getConfig().yearDivide,
      ).yearly;
  final heavenlyStem = getMyHeavenlyStemNameFrom(yearly[0]);
  final earthlyBranch = getMyEarthlyBranchNameFrom(yearly[1]);

  const stars = [
    boShi,
    liShi,
    qingLong,
    xiaoHao,
    jiangJun,
    zouShu,
    flyLian,
    xiShen,
    bingFu,
    daHao,
    fuBing,
    guanFu,
  ];
  int luIndex =
      getLuYangTuoMaIndex(heavenlyStem, earthlyBranch)["luIndex"] ?? -1;
  List<StarName> boshi12 = List.filled(12, StarName.tai);
  for (int i = 0; i < stars.length; i++) {
    int idx = fixIndex(
      genderMap[gender.key] == earthlyBranchesMap[earthlyBranch.key]?["yinYang"]
          ? luIndex + i
          : luIndex - i,
    );
    boshi12[idx] = getStarNameFrom(stars[i]);
  }
  return boshi12;
}