|
15 | 15 | import com.intellij.execution.filters.UrlFilter;
|
16 | 16 | import com.intellij.execution.runners.ExecutionEnvironment;
|
17 | 17 | import com.intellij.execution.runners.RunConfigurationWithSuppressedDefaultRunAction;
|
| 18 | +import com.intellij.openapi.application.ModalityState; |
| 19 | +import com.intellij.openapi.application.ReadAction; |
18 | 20 | import com.intellij.openapi.diagnostic.Logger;
|
19 | 21 | import com.intellij.openapi.module.Module;
|
20 | 22 | import com.intellij.openapi.module.ModuleUtilCore;
|
|
32 | 34 | import com.intellij.refactoring.listeners.RefactoringElementListener;
|
33 | 35 | import com.intellij.refactoring.listeners.UndoRefactoringElementAdapter;
|
34 | 36 | import com.intellij.util.PathUtil;
|
| 37 | +import com.intellij.util.concurrency.AppExecutorUtil; |
35 | 38 | import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
|
36 | 39 | import com.intellij.util.xmlb.XmlSerializer;
|
37 | 40 | import com.jetbrains.lang.dart.ide.runner.DartConsoleFilter;
|
38 | 41 | import io.flutter.FlutterUtils;
|
39 | 42 | import io.flutter.console.FlutterConsoleFilter;
|
| 43 | +import io.flutter.dart.FlutterDartAnalysisServer; |
40 | 44 | import io.flutter.run.common.RunMode;
|
41 | 45 | import io.flutter.run.daemon.FlutterApp;
|
42 | 46 | import io.flutter.sdk.FlutterSdkManager;
|
@@ -222,18 +226,26 @@ protected void addConsoleFilters(@NotNull LaunchState launcher,
|
222 | 226 | @NotNull ExecutionEnvironment env,
|
223 | 227 | @NotNull MainFile mainFile,
|
224 | 228 | @Nullable Module module) {
|
225 |
| - // Set up additional console filters. |
226 |
| - final TextConsoleBuilder builder = launcher.getConsoleBuilder(); |
227 |
| - // file:, package:, and dart: references |
228 |
| - builder.addFilter(new DartConsoleFilter(env.getProject(), mainFile.getFile())); |
229 |
| - //// links often found when running tests |
230 |
| - //builder.addFilter(new DartRelativePathsConsoleFilter(env.getProject(), mainFile.getAppDir().getPath())); |
231 |
| - if (module != null) { |
232 |
| - // various flutter run links |
233 |
| - builder.addFilter(new FlutterConsoleFilter(module)); |
234 |
| - } |
235 |
| - // general urls |
236 |
| - builder.addFilter(new UrlFilter()); |
| 229 | + // Creating console filters is expensive so we want to make sure we are not blocking. |
| 230 | + // See: https://github.com/flutter/flutter-intellij/issues/8089 |
| 231 | + ReadAction.nonBlocking(() -> { |
| 232 | + // Set up additional console filters. |
| 233 | + final TextConsoleBuilder builder = launcher.getConsoleBuilder(); |
| 234 | + if (builder == null) return null; |
| 235 | + // file:, package:, and dart: references |
| 236 | + builder.addFilter(new DartConsoleFilter(env.getProject(), mainFile.getFile())); |
| 237 | + //// links often found when running tests |
| 238 | + //builder.addFilter(new DartRelativePathsConsoleFilter(env.getProject(), mainFile.getAppDir().getPath())); |
| 239 | + if (module != null) { |
| 240 | + // various flutter run links |
| 241 | + builder.addFilter(new FlutterConsoleFilter(module)); |
| 242 | + } |
| 243 | + // general urls |
| 244 | + builder.addFilter(new UrlFilter()); |
| 245 | + return null; |
| 246 | + }) |
| 247 | + .expireWith(FlutterDartAnalysisServer.getInstance(getProject())) |
| 248 | + .submit(AppExecutorUtil.getAppExecutorService()); |
237 | 249 | }
|
238 | 250 |
|
239 | 251 | @NotNull
|
|
0 commit comments