FlutterUtil.kt 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package util
  2. import com.intellij.openapi.module.Module
  3. import com.intellij.openapi.module.ModuleUtil
  4. import com.intellij.openapi.project.Project
  5. import com.intellij.openapi.roots.ModuleRootManager
  6. import com.intellij.psi.PsiDirectory
  7. import com.intellij.psi.PsiElement
  8. import com.intellij.psi.search.FilenameIndex
  9. import com.intellij.psi.search.GlobalSearchScope
  10. import constant.Constants
  11. object FlutterUtil {
  12. fun isValidAction(project: Project, psiElement: PsiElement?): Boolean {
  13. // 检查是否为Flutter应用
  14. var exist = false
  15. for (pubspec in FilenameIndex.getFilesByName(
  16. project,
  17. Constants.flutterTarget,
  18. GlobalSearchScope.projectScope(project)
  19. )) {
  20. if (pubspec.isValid) {
  21. exist = true
  22. break
  23. }
  24. }
  25. // 检查是否在文件夹下操作及是否在lib子目录下执行
  26. var inLib = false
  27. if (psiElement != null && psiElement is PsiDirectory) {
  28. val module: Module? = ModuleUtil.findModuleForFile(project.projectFile!!, project)
  29. val moduleRootPath = ModuleRootManager.getInstance(module!!).contentRoots[0].path
  30. if (psiElement.virtualFile.path.startsWith("${moduleRootPath}/lib")) {
  31. inLib = true
  32. }
  33. }
  34. return exist && project.name == Constants.projectName && inLib
  35. }
  36. }