
To support #61407 , the tool needs to check if a single widget reload is feasible, and then conditionally perform a fast reassemble. To accomplish this, the FlutterDevice class will have a WidgetCache injected. This will eventually contain the logic for parsing the invalidated dart script. Concurrent with the devFS update, the widget cache will be updated/checked if a single widget reload is feasible. If so, an expression evaluation with the target type is performed and the success is communicated through the devFS result. An integration test which demonstrates that this works is already present in https://github.com/flutter/flutter/blob/master/packages/flutter_tools/test/integration.shard/hot_reload_test.dart#L86 Finally, when actually performing the reassemble the tool simply checks if this flag has been set and calls the alternative reassemble method. Cleanups: Remove modules, as this is unused now.
29 lines
844 B
Dart
29 lines
844 B
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 'features.dart';
|
|
|
|
/// The widget cache determines if the body of a single widget was modified since
|
|
/// the last scan of the token stream.
|
|
class WidgetCache {
|
|
WidgetCache({
|
|
@required FeatureFlags featureFlags,
|
|
}) : _featureFlags = featureFlags;
|
|
|
|
final FeatureFlags _featureFlags;
|
|
|
|
/// If the build method of a single widget was modified, return the widget name.
|
|
///
|
|
/// If any other changes were made, or there is an error scanning the file,
|
|
/// return `null`.
|
|
Future<String> validateLibrary(Uri libraryUri) async {
|
|
if (!_featureFlags.isSingleWidgetReloadEnabled) {
|
|
return null;
|
|
}
|
|
return null;
|
|
}
|
|
}
|