Fix late initialization error in DevTools store logic (#9816)

* Fix late initialization error in DevTools store logic

* fix error in persistent properties and add test
diff --git a/packages/devtools_shared/lib/src/server/devtools_store.dart b/packages/devtools_shared/lib/src/server/devtools_store.dart
index 59b599f..b306c4c 100644
--- a/packages/devtools_shared/lib/src/server/devtools_store.dart
+++ b/packages/devtools_shared/lib/src/server/devtools_store.dart
@@ -34,12 +34,11 @@
 class DevToolsUsage {
   DevToolsUsage() {
     LocalFileSystem.maybeMoveLegacyDevToolsStore();
-    _removeLegacyKeys();
-
     properties = IOPersistentProperties(
       storeName,
       documentDirPath: LocalFileSystem.devToolsDir(),
     );
+    _removeLegacyKeys();
   }
 
   static const storeName = '.devtools';
diff --git a/packages/devtools_shared/lib/src/server/file_system.dart b/packages/devtools_shared/lib/src/server/file_system.dart
index 80d2440..58dc6bc 100644
--- a/packages/devtools_shared/lib/src/server/file_system.dart
+++ b/packages/devtools_shared/lib/src/server/file_system.dart
@@ -141,7 +141,7 @@
   }
 
   void remove(String propertyName) {
-    _map.remove(propertyName);
+    this[propertyName] = null;
   }
 }
 
diff --git a/packages/devtools_shared/test/server/persistent_properties_test.dart b/packages/devtools_shared/test/server/persistent_properties_test.dart
new file mode 100644
index 0000000..a1b667c
--- /dev/null
+++ b/packages/devtools_shared/test/server/persistent_properties_test.dart
@@ -0,0 +1,49 @@
+// Copyright 2026 The Flutter Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:devtools_shared/src/server/file_system.dart';
+import 'package:test/test.dart';
+
+void main() {
+  group('IOPersistentProperties', () {
+    late Directory tempDir;
+    late IOPersistentProperties properties;
+    const storeName = 'test_store';
+
+    setUp(() {
+      tempDir = Directory.systemTemp.createTempSync('persistent_properties_test');
+      properties = IOPersistentProperties(
+        storeName,
+        documentDirPath: tempDir.path,
+      );
+    });
+
+    tearDown(() {
+      tempDir.deleteSync(recursive: true);
+    });
+
+    test('remove persists changes to disk', () {
+      properties['key1'] = 'value1';
+      properties['key2'] = 'value2';
+
+      final file = File('${tempDir.path}/$storeName');
+      expect(file.existsSync(), isTrue);
+
+      var content = file.readAsStringSync();
+      var json = (jsonDecode(content) as Map).cast<String, Object>();
+      expect(json['key1'], 'value1');
+      expect(json['key2'], 'value2');
+
+      properties.remove('key1');
+
+      content = file.readAsStringSync();
+      json = (jsonDecode(content) as Map).cast<String, Object>();
+      expect(json.containsKey('key1'), isFalse);
+      expect(json['key2'], 'value2');
+    });
+  });
+}
diff --git a/pubspec.lock b/pubspec.lock
index 4445dcc..d6df6ba 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -85,10 +85,10 @@
     dependency: "direct dev"
     description:
       name: build_runner
-      sha256: "22fdcc3cfeb9d974d7408718c4be15ec5e9b1b350088f3a6c88f154e74dd700d"
+      sha256: "1523ce62448ebac2c15a8ba5fbad8acac169788658a7dd2a1c2d9c2a9318b9a6"
       url: "https://pub.dev"
     source: hosted
-    version: "2.14.1"
+    version: "2.15.0"
   built_collection:
     dependency: transitive
     description:
@@ -101,10 +101,10 @@
     dependency: transitive
     description:
       name: built_value
-      sha256: "0730c18c770d05636a8f945c32a4d7d81cb6e0f0148c8db4ad12e7748f7e49af"
+      sha256: "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56"
       url: "https://pub.dev"
     source: hosted
-    version: "8.12.5"
+    version: "8.12.6"
   characters:
     dependency: transitive
     description:
@@ -539,10 +539,10 @@
     dependency: transitive
     description:
       name: matcher
-      sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
+      sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd"
       url: "https://pub.dev"
     source: hosted
-    version: "0.12.19"
+    version: "0.12.20"
   material_color_utilities:
     dependency: transitive
     description:
@@ -555,10 +555,10 @@
     dependency: transitive
     description:
       name: meta
-      sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
+      sha256: df0c643f44ad098eb37988027a8e2b2b5a031fd3977f06bbfd3a76637e8df739
       url: "https://pub.dev"
     source: hosted
-    version: "1.18.0"
+    version: "1.18.2"
   mime:
     dependency: transitive
     description:
@@ -863,26 +863,26 @@
     dependency: transitive
     description:
       name: test
-      sha256: "8d9ceddbab833f180fbefed08afa76d7c03513dfdba87ffcec2718b02bbcbf20"
+      sha256: ca578dc12bb8b2f40b67b7d3bd2fac4f31c01a6ff7130a14e2597b919934507f
       url: "https://pub.dev"
     source: hosted
-    version: "1.31.0"
+    version: "1.31.1"
   test_api:
     dependency: transitive
     description:
       name: test_api
-      sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
+      sha256: "2a122cbe059f8b610d3a5415f42e255b6c17b1f21eee1d960f31080237fb4f11"
       url: "https://pub.dev"
     source: hosted
-    version: "0.7.11"
+    version: "0.7.12"
   test_core:
     dependency: transitive
     description:
       name: test_core
-      sha256: "1991d4cfe85d5043241acac92962c3977c8d2f2add1ee73130c7b286417d1d34"
+      sha256: d2e98ec12998368dc59ddd47ab709f2cd55acd6b66dc7db764455a44082f4bc5
       url: "https://pub.dev"
     source: hosted
-    version: "0.6.17"
+    version: "0.6.18"
   typed_data:
     dependency: transitive
     description:
@@ -967,10 +967,10 @@
     dependency: transitive
     description:
       name: vector_math
-      sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
+      sha256: "47a1b32ee755c3fcffa33db52a7258c137f97bdb2209a1075be847809fac4ccf"
       url: "https://pub.dev"
     source: hosted
-    version: "2.2.0"
+    version: "2.3.0"
   vm_service:
     dependency: transitive
     description: