Widget build()

in release_dashboard/lib/widgets/create_release_substeps.dart [160:218]


  Widget build(BuildContext context) {
    final GitValidation candidateBranch = CandidateBranch();
    final GitValidation gitRemote = GitRemote();
    final GitValidation multiGitHash = MultiGitHash();
    final GitValidation gitHash = GitHash();

    final Map<CreateReleaseSubstep, GitValidation> gitValidatonMapping = <CreateReleaseSubstep, GitValidation>{
      CreateReleaseSubstep.candidateBranch: candidateBranch,
      CreateReleaseSubstep.frameworkMirror: gitRemote,
      CreateReleaseSubstep.engineMirror: gitRemote,
      CreateReleaseSubstep.engineCherrypicks: multiGitHash,
      CreateReleaseSubstep.frameworkCherrypicks: multiGitHash,
      CreateReleaseSubstep.dartRevision: gitHash,
    };

    final ConductorService conductor = context.watch<StatusState>().conductor;

    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        for (final CreateReleaseSubstep substep in CreateReleaseSubstep.values)
          if (CreateReleaseSubsteps.dropdownElements.contains(substep)) ...[
            DropdownAsSubstep(
              substep: substep,
              releaseData: releaseData[substep],
              setReleaseData: setReleaseData,
              options: substep == CreateReleaseSubstep.releaseChannel ? kBaseReleaseChannels : KReleaseIncrements,
              changeIsDropdownValid: changeIsEachInputValid,
              isLoading: _isLoading,
            )
          ] else ...[
            InputAsSubstep(
              substep: substep,
              setReleaseData: setReleaseData,
              hintText: CreateReleaseSubsteps.inputHintText[substep],
              changeIsInputValid: changeIsEachInputValid,
              validationClass: gitValidatonMapping[substep]!,
              isLoading: _isLoading,
            )
          ],
        const SizedBox(height: 20.0),
        ContinueButton(
          elevatedButtonKey: const Key('createReleaseContinue'),
          error: _error,
          enabled: !isEachInputValid.containsValue(false) && !_isLoading,
          onPressedCallback: () async {
            setError(null);
            setIsLoading(true);
            runCreateRelease(conductor, context).catchError((error, stacktrace) {
              setError(errorToString(error, stacktrace));
            }).whenComplete(() {
              setIsLoading(false);
            });
          },
          isLoading: _isLoading,
        ),
      ],
    );
  }