Minor improvements. (#5297)

diff --git a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/paths.dart b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/paths.dart
index 21a2a08..06c7fc7 100644
--- a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/paths.dart
+++ b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/paths.dart
@@ -30,7 +30,7 @@
   bool get supportsSorting => true;
 
   @override
-  String getTooltip(StatsByPathEntry record) => record.key.toLongString();
+  String getTooltip(StatsByPathEntry record) => '';
 }
 
 class _InstanceColumn extends ColumnData<StatsByPathEntry> {
diff --git a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/classes_table_diff.dart b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/classes_table_diff.dart
index a4e67db..b0a1fdb 100644
--- a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/classes_table_diff.dart
+++ b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/classes_table_diff.dart
@@ -290,21 +290,21 @@
   final AdaptedHeapData after;
 
   static final _columnGroups = [
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: '',
       range: const Range(0, 1),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: 'Instances',
       range: const Range(1, 5),
       tooltip: nonGcableInstancesColumnTooltip,
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: 'Shallow Dart Size',
       range: const Range(5, 9),
       tooltip: shallowSizeColumnTooltip,
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: 'Retained Dart Size',
       range: const Range(9, 13),
       tooltip: retainedSizeColumnTooltip,
diff --git a/packages/devtools_app/lib/src/screens/memory/panes/profile/profile_view.dart b/packages/devtools_app/lib/src/screens/memory/panes/profile/profile_view.dart
index ba31601..481cc45 100644
--- a/packages/devtools_app/lib/src/screens/memory/panes/profile/profile_view.dart
+++ b/packages/devtools_app/lib/src/screens/memory/panes/profile/profile_view.dart
@@ -346,19 +346,19 @@
   }) : super(key: key);
 
   static final _columnGroup = [
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: '',
       range: const Range(0, 1),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.total.toString(),
       range: const Range(1, 5),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.newSpace.toString(),
       range: const Range(5, 9),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.oldSpace.toString(),
       range: const Range(9, 13),
     ),
@@ -478,19 +478,19 @@
 
   /// List of columns displayed in VM developer mode state.
   static final _vmModeColumnGroups = [
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: '',
       range: const Range(0, 1),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.total.toString(),
       range: const Range(1, 5),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.newSpace.toString(),
       range: const Range(5, 9),
     ),
-    ColumnGroup(
+    ColumnGroup.fromText(
       title: HeapGeneration.oldSpace.toString(),
       range: const Range(9, 13),
     ),
diff --git a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_code_display.dart b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_code_display.dart
index 112336d..d407145 100644
--- a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_code_display.dart
+++ b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_code_display.dart
@@ -271,9 +271,12 @@
       dataKey: 'vm-code-display',
       keyFactory: (instruction) => Key(instruction.address),
       columnGroups: [
-        ColumnGroup(title: 'Instructions', range: const Range(0, 3)),
+        ColumnGroup.fromText(title: 'Instructions', range: const Range(0, 3)),
         if (profilerTicksEnabled)
-          ColumnGroup(title: 'Profiler Ticks', range: const Range(4, 6)),
+          ColumnGroup.fromText(
+            title: 'Profiler Ticks',
+            range: const Range(4, 6),
+          ),
       ],
       columns: columns,
       defaultSortColumn: columns[0],
diff --git a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart
index 9717fb5..25af97e 100644
--- a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart
+++ b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart
@@ -123,7 +123,7 @@
       dataKey: 'vm-code-display',
       keyFactory: (entry) => Key(entry.offset.toString()),
       columnGroups: [
-        ColumnGroup(title: 'Entries', range: const Range(0, 2)),
+        ColumnGroup.fromText(title: 'Entries', range: const Range(0, 2)),
       ],
       columns: columns,
       defaultSortColumn: columns[0],
diff --git a/packages/devtools_app/lib/src/shared/common_widgets.dart b/packages/devtools_app/lib/src/shared/common_widgets.dart
index e18abcb..92d4f14 100644
--- a/packages/devtools_app/lib/src/shared/common_widgets.dart
+++ b/packages/devtools_app/lib/src/shared/common_widgets.dart
@@ -2002,7 +2002,7 @@
   EdgeInsetsGeometry? tooltipPadding,
   required Widget child,
 }) {
-  if (tooltip != null) {
+  if (tooltip != null && tooltip.isNotEmpty) {
     return DevToolsTooltip(
       message: tooltip,
       padding: tooltipPadding,
diff --git a/packages/devtools_app/lib/src/shared/table/table.dart b/packages/devtools_app/lib/src/shared/table/table.dart
index 2553705..dc8f639 100644
--- a/packages/devtools_app/lib/src/shared/table/table.dart
+++ b/packages/devtools_app/lib/src/shared/table/table.dart
@@ -1821,7 +1821,7 @@
           return Container(
             alignment: Alignment.center,
             width: groupWidth,
-            child: Text(group.title),
+            child: group.title,
           );
         },
       ),
diff --git a/packages/devtools_app/lib/src/shared/table/table_data.dart b/packages/devtools_app/lib/src/shared/table/table_data.dart
index 77214d8..bb88e17 100644
--- a/packages/devtools_app/lib/src/shared/table/table_data.dart
+++ b/packages/devtools_app/lib/src/shared/table/table_data.dart
@@ -6,6 +6,7 @@
 
 import 'package:flutter/material.dart';
 
+import '../common_widgets.dart';
 import '../primitives/trees.dart';
 import '../primitives/utils.dart';
 import '../theme.dart';
@@ -129,14 +130,21 @@
 /// will be drawn between groups and an additional header row will be added to
 /// the table to display the column group titles.
 class ColumnGroup {
-  ColumnGroup({required this.title, required this.range, this.tooltip});
+  ColumnGroup({required this.title, required this.range});
 
-  final String title;
+  ColumnGroup.fromText({
+    required String title,
+    required Range range,
+    String? tooltip,
+  }) : this(
+          title: maybeWrapWithTooltip(child: Text(title), tooltip: tooltip),
+          range: range,
+        );
+
+  final Widget title;
 
   /// The range of column indices for columns that make up this group.
   final Range range;
-
-  final String? tooltip;
 }
 
 extension ColumnDataExtension<T> on ColumnData<T> {
diff --git a/packages/devtools_app/test/shared/table_test.dart b/packages/devtools_app/test/shared/table_test.dart
index 5cc4bcf..347c19d 100644
--- a/packages/devtools_app/test/shared/table_test.dart
+++ b/packages/devtools_app/test/shared/table_test.dart
@@ -136,11 +136,11 @@
             _NumberColumn(),
           ],
           columnGroups: [
-            ColumnGroup(
+            ColumnGroup.fromText(
               title: 'Group 1',
               range: const Range(0, 1),
             ),
-            ColumnGroup(
+            ColumnGroup.fromText(
               title: 'Group 2',
               range: const Range(1, 2),
             ),