1616import com .intellij .openapi .project .Project ;
1717import com .intellij .openapi .project .ProjectManager ;
1818import com .intellij .openapi .roots .*;
19+ import com .intellij .openapi .util .text .StringUtil ;
1920import com .intellij .openapi .vfs .LocalFileSystem ;
2021import com .intellij .openapi .vfs .VfsUtil ;
2122import com .intellij .openapi .vfs .VirtualFile ;
@@ -61,6 +62,7 @@ public static class FlutterPubspecInfo {
6162
6263 private boolean flutter = false ;
6364 private boolean plugin = false ;
65+ private boolean resolutionWorkspace = false ;
6466
6567 FlutterPubspecInfo (long modificationStamp ) {
6668 this .modificationStamp = modificationStamp ;
@@ -74,6 +76,10 @@ public boolean isFlutterPlugin() {
7476 return plugin ;
7577 }
7678
79+ public boolean isResolutionWorkspace () {
80+ return resolutionWorkspace ;
81+ }
82+
7783 public long getModificationStamp () {
7884 return modificationStamp ;
7985 }
@@ -360,6 +366,13 @@ public static FlutterPubspecInfo getFlutterPubspecInfo(@NotNull final VirtualFil
360366 if (flutterEntry instanceof Map ) {
361367 info .plugin = ((Map <?, ?>)flutterEntry ).containsKey ("plugin" );
362368 }
369+
370+ // Check for resolution configuration.
371+ // https://dart.dev/tools/pub/workspaces
372+ final Object resolutionEntry = yamlMap .get ("resolution" );
373+ if (resolutionEntry instanceof String ) {
374+ info .resolutionWorkspace = StringUtil .equals ((String )resolutionEntry , "workspace" );
375+ }
363376 }
364377 }
365378 catch (IOException e ) {
0 commit comments