79 lines
2.1 KiB
Dart
79 lines
2.1 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 'package:meta/meta.dart';
|
|
import 'package:platform/platform.dart';
|
|
|
|
import 'base/config.dart';
|
|
import 'base/context.dart';
|
|
import 'base/file_system.dart';
|
|
import 'base/logger.dart';
|
|
|
|
/// A class that represents global (non-project-specific) internal state that
|
|
/// must persist across tool invocations.
|
|
abstract class PersistentToolState {
|
|
factory PersistentToolState({
|
|
@required FileSystem fileSystem,
|
|
@required Logger logger,
|
|
@required Platform platform,
|
|
}) => _DefaultPersistentToolState(
|
|
fileSystem: fileSystem,
|
|
logger: logger,
|
|
platform: platform,
|
|
);
|
|
|
|
factory PersistentToolState.test({
|
|
@required Directory directory,
|
|
@required Logger logger,
|
|
}) => _DefaultPersistentToolState.test(
|
|
directory: directory,
|
|
logger: logger,
|
|
);
|
|
|
|
static PersistentToolState get instance => context.get<PersistentToolState>();
|
|
|
|
/// Whether the welcome message should be redisplayed.
|
|
///
|
|
/// May give null if the value has not been set.
|
|
bool redisplayWelcomeMessage;
|
|
}
|
|
|
|
class _DefaultPersistentToolState implements PersistentToolState {
|
|
_DefaultPersistentToolState({
|
|
@required FileSystem fileSystem,
|
|
@required Logger logger,
|
|
@required Platform platform,
|
|
}) : _config = Config(
|
|
_kFileName,
|
|
fileSystem: fileSystem,
|
|
logger: logger,
|
|
platform: platform,
|
|
);
|
|
|
|
@visibleForTesting
|
|
_DefaultPersistentToolState.test({
|
|
@required Directory directory,
|
|
@required Logger logger,
|
|
}) : _config = Config.test(
|
|
_kFileName,
|
|
directory: directory,
|
|
logger: logger,
|
|
);
|
|
|
|
static const String _kFileName = '.flutter_tool_state';
|
|
static const String _kRedisplayWelcomeMessage = 'redisplay-welcome-message';
|
|
|
|
final Config _config;
|
|
|
|
@override
|
|
bool get redisplayWelcomeMessage {
|
|
return _config.getValue(_kRedisplayWelcomeMessage) as bool;
|
|
}
|
|
|
|
@override
|
|
set redisplayWelcomeMessage(bool value) {
|
|
_config.setValue(_kRedisplayWelcomeMessage, value);
|
|
}
|
|
}
|