|
5 | 5 | */
|
6 | 6 | package io.flutter;
|
7 | 7 |
|
| 8 | +import com.intellij.openapi.application.ReadAction; |
8 | 9 | import com.intellij.openapi.project.Project;
|
9 | 10 | import com.intellij.openapi.startup.StartupActivity;
|
| 11 | +import com.intellij.util.concurrency.AppExecutorUtil; |
10 | 12 | import io.flutter.android.AndroidModuleLibraryManager;
|
11 |
| -//import io.flutter.project.FlutterProjectCreator; |
| 13 | +import io.flutter.dart.FlutterDartAnalysisServer; |
12 | 14 | import io.flutter.settings.FlutterSettings;
|
13 | 15 | import io.flutter.utils.AddToAppUtils;
|
14 | 16 | import io.flutter.utils.AndroidUtils;
|
15 | 17 | import io.flutter.utils.GradleUtils;
|
16 | 18 | import org.jetbrains.annotations.NotNull;
|
17 | 19 |
|
18 | 20 | public class FlutterStudioStartupActivity implements StartupActivity {
|
19 |
| - |
20 |
| - @Override |
21 |
| - public void runActivity(@NotNull Project project) { |
| 21 | + private static Void doNonBlockingStartup(@NotNull Project project) { |
22 | 22 | if (AndroidUtils.isAndroidProject(project)) {
|
23 | 23 | GradleUtils.addGradleListeners(project);
|
24 | 24 | }
|
25 | 25 | if (!AddToAppUtils.initializeAndDetectFlutter(project)) {
|
26 |
| - return; |
| 26 | + return null; |
27 | 27 | }
|
28 |
| - |
29 | 28 | // Unset this flag for all projects, mainly to ease the upgrade from 3.0.1 to 3.1.
|
30 | 29 | // TODO(messick) Delete once 3.0.x has 0 7DA's.
|
31 | 30 | //FlutterProjectCreator.disableUserConfig(project);
|
32 | 31 | // Monitor Android dependencies.
|
33 |
| - if (FlutterSettings.getInstance().isSyncingAndroidLibraries() || |
| 32 | + FlutterSettings flutterSettings = FlutterSettings.getInstance(); |
| 33 | + if (flutterSettings != null && flutterSettings.isSyncingAndroidLibraries() || |
34 | 34 | System.getProperty("flutter.android.library.sync", null) != null) {
|
35 | 35 | // TODO(messick): Remove the flag once this sync mechanism is stable.
|
36 | 36 | AndroidModuleLibraryManager.startWatching(project);
|
37 | 37 | }
|
| 38 | + return null; |
| 39 | + } |
| 40 | + |
| 41 | + @Override |
| 42 | + public void runActivity(@NotNull Project project) { |
| 43 | + ReadAction.nonBlocking(() -> doNonBlockingStartup(project)).expireWith(FlutterDartAnalysisServer.getInstance(project)) |
| 44 | + .submit(AppExecutorUtil.getAppExecutorService()); |
38 | 45 | }
|
39 | 46 | }
|
0 commit comments