Как сделать VS-код способным искать код в каталоге подпроектов для автозаполнения?

#flutter #dart #visual-studio-code

Вопрос:

У меня есть структура проекта

 -core_data
-core_domain
-core_ui
-core_launcher
 

Зависимость этих 4 проектов заключается в

 core_launcher -> core_ui -> core_domain -> core_data
 

4 проекта находятся в одном каталоге, и я включаю один в другой через файл pubspec.yaml (например, core_launcher/pubspec.yaml):

 dependencies:
  flutter:
    sdk: flutter
  core_ui:
    path: ../core_ui
 

То же самое я делаю со всеми проектами, чтобы создать иерархию зависимостей.

Проблема в том, что я могу импортировать все файлы из core_ui подпроекта, когда я в данный момент редактирую какой-либо файл, core_launcher но VSCode не видит никаких классов от его родителей (core_domain и core_data).

Тем не менее, я могу вводить import 'blah-blah-blah вручную, и VSCode видит этот класс, и импорт работает хорошо, но я не могу сделать это с помощью нажатия Alt Enter, которое я делаю для быстрого импорта. Итак, мне интересно, почему автозаполнение не работает для унаследованных библиотек.

У кого — то была такая же проблема?

Ответ №1:

При завершении кода будут показаны только классы из ваших прямых зависимостей. Для этого есть две возможные причины:

  1. Полагаться на переходные зависимости-не очень хорошая идея, потому что вполне возможно, что ваши зависимости удалят или изменят свои зависимости и не сочтут это критическим изменением.
  2. Если бы в завершении кода были перечислены все классы из всех переходных зависимостей, список завершения кода был бы огромным и включал бы классы из пакетов, которые вы не узнаете (потому что это просто зависимости от других пакетов). Это было бы плохим пользовательским опытом и облегчило бы случайную зависимость от пакетов, которые не перечислены в вашем pubspec.yaml .

Исправление заключается в том, чтобы явно перечислить core_domain и core_data в вашем pubspec.yaml тоже, потому что если ваш проект использует классы из них, то они являются зависимостями.