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,
),
],
);
}