diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart
index 2abf33f..3f28f6e 100644
--- a/packages/flutter_tools/lib/src/dart/pub.dart
+++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -223,7 +223,7 @@
     }
 
     if (!packageConfigFile.existsSync()) {
-      throwToolExit('$directory: pub did not create .packages file.');
+      throwToolExit('$directory: pub did not create .dart_tools/package_config.json file.');
     }
     if (pubSpecYaml.lastModifiedSync() != originalPubspecYamlModificationTime) {
       throwToolExit(
@@ -232,8 +232,6 @@
     }
     // We don't check if dotPackages was actually modified, because as far as we can tell sometimes
     // pub will decide it does not need to actually modify it.
-    // Since we rely on the file having a more recent timestamp, though, we do manually force the
-    // file to be more recently modified.
     final DateTime now = DateTime.now();
     if (now.isBefore(originalPubspecYamlModificationTime)) {
       _logger.printError(
@@ -243,18 +241,6 @@
         'The timestamp was: $originalPubspecYamlModificationTime\n'
         'The time now is: $now'
       );
-    } else {
-      packageConfigFile.setLastModifiedSync(now);
-      final DateTime newDotPackagesTimestamp = packageConfigFile.lastModifiedSync();
-      if (newDotPackagesTimestamp.isBefore(originalPubspecYamlModificationTime)) {
-        _logger.printError(
-          'Warning: Failed to set timestamp of "${_fileSystem.path.absolute(packageConfigFile.path)}". '
-          'Tried to set timestamp to $now, but new timestamp is $newDotPackagesTimestamp.'
-        );
-        if (newDotPackagesTimestamp.isAfter(now)) {
-          _logger.printError('Maybe the file was concurrently modified?');
-        }
-      }
     }
   }
 
diff --git a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
index e53c611..c8cc138 100644
--- a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
+++ b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
@@ -338,8 +338,6 @@
     expect(logger.statusText, 'Running "flutter pub get" in /...\n');
     expect(logger.errorText, isEmpty);
     expect(fileSystem.file('pubspec.yaml').lastModifiedSync(), DateTime(2001)); // because nothing should touch it
-    expect(fileSystem.file('.dart_tool/package_config.json').lastModifiedSync(), isNot(DateTime(2000))); // because pub changes it to 2002
-    expect(fileSystem.file('.dart_tool/package_config.json').lastModifiedSync(), isNot(DateTime(2002))); // because we set the timestamp again after pub
     logger.clear();
 
     // bad scenario 1: pub doesn't update file; doesn't matter, because we do instead
@@ -352,8 +350,6 @@
     expect(logger.statusText, 'Running "flutter pub get" in /...\n');
     expect(logger.errorText, isEmpty);
     expect(fileSystem.file('pubspec.yaml').lastModifiedSync(), DateTime(2001)); // because nothing should touch it
-    expect(fileSystem.file('.dart_tool/package_config.json').lastModifiedSync(), isNot(DateTime(2000))); // because we set the timestamp
-    expect(fileSystem.file('.dart_tool/package_config.json').lastModifiedSync(), isNot(DateTime(2002))); // just in case FakeProcessManager is buggy
     logger.clear();
 
     // bad scenario 2: pub changes pubspec.yaml instead
@@ -370,7 +366,6 @@
     expect(logger.statusText, 'Running "flutter pub get" in /...\n');
     expect(logger.errorText, isEmpty);
     expect(fileSystem.file('pubspec.yaml').lastModifiedSync(), DateTime(2002)); // because fake pub above touched it
-    expect(fileSystem.file('.dart_tool/package_config.json').lastModifiedSync(), DateTime(2000)); // because nothing touched it
 
     // bad scenario 3: pubspec.yaml was created in the future
     fileSystem.file('.dart_tool/package_config.json')
