flutter/packages/flutter_tools/lib/src/pre_run_validator.dart
Nate 1a0dc8f1e1
Add missing parameter to TableBorder.symmetric, and improve class constructors (#144279)
Originally, my aim was just to refactor (as per usual), but while messing around with the `TableBorder.symmetric` constructor, I realized that `borderRadius` was missing!

This pull request makes a few class constructors more efficient, and it fixes #144277 by adding the missing parameter.

<br>
2024-03-04 20:20:19 +00:00

50 lines
1.5 KiB
Dart

// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'base/common.dart';
import 'base/file_system.dart';
import 'cache.dart';
/// A validator that runs before the tool runs any command.
abstract class PreRunValidator {
factory PreRunValidator({required FileSystem fileSystem}) = _DefaultPreRunValidator;
void validate();
}
class _DefaultPreRunValidator implements PreRunValidator {
_DefaultPreRunValidator({
required this.fileSystem,
});
final FileSystem fileSystem;
late final Directory _toolsDir = fileSystem.directory(
fileSystem.path.join(Cache.flutterRoot!, 'packages', 'flutter_tools'),
);
@override
void validate() {
// If a user downloads the Flutter SDK via a pre-built archive and there is
// an error during extraction, the user could have a valid Dart snapshot of
// the tool but not the source directory. We still need the source, so
// validate the source directory exists and toolExit if not.
if (!_toolsDir.existsSync()) {
throwToolExit(
'Flutter SDK installation appears corrupted: expected to find the '
'directory ${_toolsDir.path} but it does not exist! Please go to '
'https://flutter.dev/setup for instructions on how to re-install '
'Flutter.',
);
}
}
}
class NoOpPreRunValidator implements PreRunValidator {
const NoOpPreRunValidator();
@override
void validate() {}
}