pick static method

Future<List<Members>?> pick(
  1. BuildContext context,
  2. Node node, {
  3. List<Members>? select,
})

Implementation

static Future<List<Members>?> pick(BuildContext context, Node node,
    {List<Members>? select}) async {
  var approver = node.data?.businessData?.approver;
  // var recentApprover = node.data?.businessData?.recentApprover;
  /// 优先使用最近审批人
  // if (recentApprover?.isNotEmpty == true) {
  //   var page = FlowMemberPicker(
  //     selectUserList: select,
  //     allowEmpty: true,
  //     originalList: recentApprover,
  //   );
  //   return await forwardPage(context, page);
  // }

  /// 选人表达式
  if (node.isCandidate) {
    var selectList = select
        ?.map((e) => CandidateEntity(
              userId: e.id,
              parentId: e.parentId,
              name: e.name,
              roleKey: e.roleKey,
              isDept: 0,
            ))
        .toList();
    var value = node.candidateExp;

    // 移除label字样
    // input?.removeWhere(
    //     (key, value) => (key is String && key.endsWith("Label")));
    var page = _CandidatePicker(
      selectUserList: selectList,
      expressionValues: value,
    );
    List<CandidateEntity>? result = await forwardPage(context, page);
    return result
        ?.map((e) => Members(
              id: e.userId,
              name: e.name,
              parentId: e.parentId,
              type: FlowMembersType.user,
              roleKey: e.roleKey,
            ))
        .toList();
  }

  ///自带的审批人
  var members = approver?.members;
  var page = FlowMemberPicker(
    selectUserList: select,
    allowEmpty: true,
    originalList: members,
  );
  return await forwardPage(context, page);
}