-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdart_flutter.patch
38 lines (34 loc) · 1.56 KB
/
dart_flutter.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
diff --git a/pkg/vm/lib/modular/target/flutter.dart b/pkg/vm/lib/modular/target/flutter.dart
index 3a797cac3a9..8fc813e69dc 100644
--- a/pkg/vm/lib/modular/target/flutter.dart
+++ b/pkg/vm/lib/modular/target/flutter.dart
@@ -9,11 +9,18 @@ import 'package:kernel/target/targets.dart';
import 'package:kernel/transformations/track_widget_constructor_locations.dart';
import 'package:vm/modular/target/vm.dart' show VmTarget;
+abstract class FlutterProgramTransformer {
+ void transform(Component component);
+}
+
class FlutterTarget extends VmTarget {
FlutterTarget(TargetFlags flags) : super(flags);
late final WidgetCreatorTracker _widgetTracker = WidgetCreatorTracker();
+ static List<FlutterProgramTransformer> _flutterProgramTransformers = [];
+ static List<FlutterProgramTransformer> get flutterProgramTransformers => _flutterProgramTransformers;
+
@override
String get name => 'flutter';
@@ -58,6 +65,14 @@ class FlutterTarget extends VmTarget {
DiagnosticReporter diagnosticReporter,
{void Function(String msg)? logger,
ChangedStructureNotifier? changedStructureNotifier}) {
+
+ if (_flutterProgramTransformers.length > 0) {
+ int flutterProgramTransformersLen = _flutterProgramTransformers.length;
+ for (int i=0; i<flutterProgramTransformersLen; i++) {
+ _flutterProgramTransformers[i].transform(component);
+ }
+ }
+
super.performPreConstantEvaluationTransformations(
component, coreTypes, libraries, diagnosticReporter,
logger: logger, changedStructureNotifier: changedStructureNotifier);