Widget _workstationConfig()

in ui/lib/modules/catalog/widgets/cloud_workstation_widget.dart [173:234]


  Widget _workstationConfig(String projectId, String region) {
    String cluster = ref.watch(clusterDropdownProvider);
    Text configNotFound = Text("Configurations not found");

    if (cluster == "Select a cluster")
      return configNotFound;

    final workstationConfigsList = ref.watch(WorkstationConfigsProvider(
        projectId: projectId, region: region, clusterName: cluster));

    return Column(
      mainAxisAlignment: MainAxisAlignment.start,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Padding(
          padding: const EdgeInsets.only(left: 0.0),
          child: Text("Configuration"),
        ),
        Row(
          children: [
            workstationConfigsList.when(
                loading: () => Container(),
                error: (err, stack) => Container(),
                data: (configsList) {
                  if (configsList.isNotEmpty) {
                    var configNames = configsList
                        .map<String>((config) => config.name
                            .substring(config.name.lastIndexOf('/') + 1))
                        .toList();

                    var selectConfigurationText = "Select a configuration";
                    return SizedBox(
                      width: 300,
                      child: DropdownButtonFormField<String>(
                        validator: (value) {
                          return null;
                        },
                        hint: Text(selectConfigurationText),
                        value: selectConfigurationText,
                        icon: const Icon(Icons.arrow_drop_down),
                        style: const TextStyle(color: Colors.black),
                        onChanged: (String? value) {
                          widget.onTextFormUpdate(value!, "_WS_CONFIG");
                        },
                        items: [selectConfigurationText, ...configNames]
                            .map<DropdownMenuItem<String>>((String configName) {
                          return DropdownMenuItem<String>(
                            value: configName,
                            child: Text(configName),
                          );
                        }).toList(),
                      ),
                    );
                  } else {
                    return configNotFound;
                  }
                }),
          ],
        ),
      ],
    );
  }