| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package util
- import com.intellij.openapi.module.Module
- import com.intellij.openapi.module.ModuleUtil
- import com.intellij.openapi.project.Project
- import com.intellij.openapi.roots.ModuleRootManager
- import com.intellij.psi.PsiDirectory
- import com.intellij.psi.PsiElement
- import com.intellij.psi.search.FilenameIndex
- import com.intellij.psi.search.GlobalSearchScope
- import constant.Constants
- object FlutterUtil {
- fun isValidAction(project: Project, psiElement: PsiElement?): Boolean {
- // 检查是否为Flutter应用
- var exist = false
- for (pubspec in FilenameIndex.getFilesByName(
- project,
- Constants.flutterTarget,
- GlobalSearchScope.projectScope(project)
- )) {
- if (pubspec.isValid) {
- exist = true
- break
- }
- }
- // 检查是否在文件夹下操作及是否在lib子目录下执行
- var inLib = false
- if (psiElement != null && psiElement is PsiDirectory) {
- val module: Module? = ModuleUtil.findModuleForFile(project.projectFile!!, project)
- val moduleRootPath = ModuleRootManager.getInstance(module!!).contentRoots[0].path
- if (psiElement.virtualFile.path.startsWith("${moduleRootPath}/lib")) {
- inLib = true
- }
- }
- return exist && project.name == Constants.projectName && inLib
- }
- }
|