Widget _projects()

in ui/lib/modules/settings/project_widget.dart [44:81]


  Widget _projects() {

    final projectsList = ref.watch(projectsProvider);

    TextEditingController _projectController = TextEditingController();
    _projectController.text = widget.initialValue;

    return projectsList.when(
        loading: () => LinearProgressIndicator(),
        error: (err, stack) => Text('Error: $err'),
        data: (projects) {
          if (projects.isNotEmpty) {
            var projectNames = projects.map<String>((e) => e.name).toList();

            var selectProjectText = "Select a project";
            return Autocomplete<String>(
              initialValue: TextEditingValue(text: _projectController.text.toString()),
              optionsBuilder: (TextEditingValue textEditingValue) {
                if (textEditingValue.text == '') {
                  return const Iterable<String>.empty();
                }
                return projectNames.where((String option) {
                  return option.contains(textEditingValue.text.toLowerCase());
                });
              },

              onSelected: (String value) {
                _projectController.text = value!;

                widget.parentRef.read(projectProvider.notifier).state =
                    projects.where((project) => project.name == value!).first;
              },
            );
          } else {
            return Container();
          }
        });
  }