drop down
diff --git a/packages/devtools_app/lib/src/screens/app_size/app_size_controller.dart b/packages/devtools_app/lib/src/screens/app_size/app_size_controller.dart
index c7926f2..d27ad71 100644
--- a/packages/devtools_app/lib/src/screens/app_size/app_size_controller.dart
+++ b/packages/devtools_app/lib/src/screens/app_size/app_size_controller.dart
@@ -175,14 +175,49 @@
}
TreemapNode? get _activeDiffRoot {
- switch (_activeDiffTreeType.value) {
- case DiffTreeType.increaseOnly:
- return _increasedDiffTreeRoot;
- case DiffTreeType.decreaseOnly:
- return _decreasedDiffTreeRoot;
- case DiffTreeType.combined:
- default:
- return _combinedDiffTreeRoot;
+ final isDeferred = _isDeferredApp.value;
+ final diffTreeType = _activeDiffTreeType.value;
+
+ if (!isDeferred) {
+ switch (diffTreeType) {
+ case DiffTreeType.increaseOnly:
+ return _increasedDiffTreeRoot;
+ case DiffTreeType.decreaseOnly:
+ return _decreasedDiffTreeRoot;
+ case DiffTreeType.combined:
+ default:
+ return _combinedDiffTreeRoot;
+ }
+ } else {
+ final appUnit = _selectedAppUnit.value;
+ switch (diffTreeType) {
+ case DiffTreeType.increaseOnly:
+ if (appUnit == AppUnit.mainOnly) {
+ return _mainIncreasedDiffTreeRoot;
+ } else if (appUnit == AppUnit.deferredOnly) {
+ return _deferredIncreasedDiffTreeRoot;
+ } else {
+ return _increasedDiffTreeRoot;
+ }
+ case DiffTreeType.decreaseOnly:
+ if (appUnit == AppUnit.mainOnly) {
+ return _mainDecreasedDiffTreeRoot;
+ } else if (appUnit == AppUnit.deferredOnly) {
+ return _deferredDecreasedDiffTreeRoot;
+ } else {
+ return _decreasedDiffTreeRoot;
+ }
+ case DiffTreeType.combined:
+ if (appUnit == AppUnit.mainOnly) {
+ return _mainCombinedDiffTreeRoot;
+ } else if (appUnit == AppUnit.deferredOnly) {
+ return _deferredCombinedDiffTreeRoot;
+ } else {
+ return _combinedDiffTreeRoot;
+ }
+ default:
+ return _combinedDiffTreeRoot;
+ }
}
}
@@ -190,6 +225,14 @@
TreemapNode? _decreasedDiffTreeRoot;
TreemapNode? _combinedDiffTreeRoot;
+ TreemapNode? _mainIncreasedDiffTreeRoot;
+ TreemapNode? _mainDecreasedDiffTreeRoot;
+ TreemapNode? _mainCombinedDiffTreeRoot;
+
+ TreemapNode? _deferredIncreasedDiffTreeRoot;
+ TreemapNode? _deferredDecreasedDiffTreeRoot;
+ TreemapNode? _deferredCombinedDiffTreeRoot;
+
Map<String, dynamic>? get _dataForAppUnit {
switch (_selectedAppUnit.value) {
case AppUnit.deferredOnly:
@@ -271,7 +314,7 @@
if (tabKey == AppSizeScreen.analysisTabKey) {
_loadApp(_dataForAppUnit!);
} else {
- print('selected $appUnit in diff view');
+ changeDiffRoot(_activeDiffRoot);
}
}
@@ -404,8 +447,8 @@
await delayForBatchProcessing(micros: 10000);
Map<String, dynamic> diffMap;
- Map<String, dynamic> mainDiffMap;
- Map<String, dynamic> deferredDiffMap;
+ Map<String, dynamic>? mainDiffMap;
+ Map<String, dynamic>? deferredDiffMap;
if (oldFile.isAnalyzeSizeFile && newFile.isAnalyzeSizeFile) {
final oldFileJson = oldFile.data as Map<String, dynamic>;
@@ -427,13 +470,15 @@
newEntireAppFileJson = _wrapInArtificialRoot(newFileJson);
}
- final oldMainOnlyFileJson = _extractMainUnit(oldEntireAppFileJson);
- final newMainOnlyFileJson = _extractMainUnit(newEntireAppFileJson);
+ final oldMainOnlyFileJson =
+ _extractMainUnit(Map.from(oldEntireAppFileJson));
+ final newMainOnlyFileJson =
+ _extractMainUnit(Map.from(newEntireAppFileJson));
final oldDeferredOnlyFileJson =
- _extractDeferredUnits(oldEntireAppFileJson);
+ _extractDeferredUnits(Map.from(oldEntireAppFileJson));
final newDeferredOnlyFileJson =
- _extractDeferredUnits(newEntireAppFileJson);
+ _extractDeferredUnits(Map.from(newEntireAppFileJson));
diffMap = _generateDiffMapFromAnalyzeSizeFiles(
oldFileJson: oldEntireAppFileJson,
@@ -474,11 +519,26 @@
diffMap['n'] = isDeferredApp.value ? _entireAppNodeName : _rootNodeName;
// TODO(peterdjlee): Try to move the non-active tree generation to separate isolates.
+ // Entire app or root (for non-deferred):
final diffTreeMap = _generateDiffTrees(diffMap);
_combinedDiffTreeRoot = diffTreeMap.combined;
_increasedDiffTreeRoot = diffTreeMap.increaseOnly;
_decreasedDiffTreeRoot = diffTreeMap.decreaseOnly;
+ if (isDeferredApp.value) {
+ // For main only:
+ final mainDiffTreeMap = _generateDiffTrees(mainDiffMap!);
+ _mainCombinedDiffTreeRoot = mainDiffTreeMap.combined;
+ _mainIncreasedDiffTreeRoot = mainDiffTreeMap.increaseOnly;
+ _mainDecreasedDiffTreeRoot = mainDiffTreeMap.decreaseOnly;
+
+ // For deferred only:
+ final deferredDiffTreeMap = _generateDiffTrees(deferredDiffMap!);
+ _deferredCombinedDiffTreeRoot = deferredDiffTreeMap.combined;
+ _deferredIncreasedDiffTreeRoot = deferredDiffTreeMap.increaseOnly;
+ _deferredDecreasedDiffTreeRoot = deferredDiffTreeMap.decreaseOnly;
+ }
+
changeDiffRoot(_activeDiffRoot);
_processingNotifier.value = false;