@@ -7,6 +7,7 @@ import 'dart:math' as math;
77
88import 'package:devtools_app_shared/ui.dart' ;
99import 'package:devtools_app_shared/utils.dart' ;
10+ import 'package:flutter/foundation.dart' ;
1011import 'package:flutter/material.dart' ;
1112
1213import '../../../../shared/analytics/analytics.dart' as ga;
@@ -39,7 +40,7 @@ class FlutterFramesChart extends StatelessWidget {
3940
4041 final bool showingOfflineData;
4142
42- final bool impellerEnabled;
43+ final ValueListenable < bool > impellerEnabled;
4344
4445 @override
4546 Widget build (BuildContext context) {
@@ -86,7 +87,7 @@ class _FlutterFramesChart extends StatefulWidget {
8687
8788 final bool showingOfflineData;
8889
89- final bool impellerEnabled;
90+ final ValueListenable < bool > impellerEnabled;
9091
9192 static double get frameNumberSectionHeight => scaleByFontFactor (20.0 );
9293
@@ -203,7 +204,7 @@ class FramesChart extends StatefulWidget {
203204
204205 final BoxConstraints constraints;
205206
206- final bool impellerEnabled;
207+ final ValueListenable < bool > impellerEnabled;
207208
208209 @override
209210 State <FramesChart > createState () => _FramesChartState ();
@@ -346,13 +347,18 @@ class _FramesChartState extends State<FramesChart> with AutoDisposeMixin {
346347 chartAxisPainter,
347348 Padding (padding: EdgeInsets .only (left: _yAxisUnitsSpace), child: chart),
348349 fpsLinePainter,
349- Positioned (
350- right: denseSpacing,
351- top: densePadding,
352- child: Text (
353- 'Engine: ${widget .impellerEnabled ? 'Impeller' : 'Skia' }' ,
354- style: themeData.subtleChartTextStyle,
355- ),
350+ ValueListenableBuilder (
351+ valueListenable: widget.impellerEnabled,
352+ builder: (context, impellerEnabled, child) {
353+ return Positioned (
354+ right: denseSpacing,
355+ top: densePadding,
356+ child: Text (
357+ 'Engine: ${impellerEnabled ? 'Impeller' : 'Skia' }' ,
358+ style: themeData.subtleChartTextStyle,
359+ ),
360+ );
361+ },
356362 ),
357363 ],
358364 );
@@ -382,7 +388,7 @@ class FramesChartControls extends StatelessWidget {
382388
383389 final bool showingOfflineData;
384390
385- final bool impellerEnabled;
391+ final ValueListenable < bool > impellerEnabled;
386392
387393 @override
388394 Widget build (BuildContext context) {
@@ -408,21 +414,26 @@ class FramesChartControls extends StatelessWidget {
408414 );
409415 },
410416 ),
411- Legend (
412- dense: true ,
413- entries: [
414- LegendEntry (terse ? 'UI' : 'Frame Time (UI)' , mainUiColor),
415- LegendEntry (
416- terse ? 'Raster' : 'Frame Time (Raster)' ,
417- mainRasterColor,
418- ),
419- LegendEntry (terse ? 'Jank' : 'Jank (slow frame)' , uiJankColor),
420- if (! impellerEnabled)
421- LegendEntry (
422- 'Shader Compilation' ,
423- shaderCompilationColor.background,
424- ),
425- ],
417+ ValueListenableBuilder (
418+ valueListenable: impellerEnabled,
419+ builder: (context, impellerEnabled, child) {
420+ return Legend (
421+ dense: true ,
422+ entries: [
423+ LegendEntry (terse ? 'UI' : 'Frame Time (UI)' , mainUiColor),
424+ LegendEntry (
425+ terse ? 'Raster' : 'Frame Time (Raster)' ,
426+ mainRasterColor,
427+ ),
428+ LegendEntry (terse ? 'Jank' : 'Jank (slow frame)' , uiJankColor),
429+ if (! impellerEnabled)
430+ LegendEntry (
431+ 'Shader Compilation' ,
432+ shaderCompilationColor.background,
433+ ),
434+ ],
435+ );
436+ },
426437 ),
427438 AverageFPS (
428439 frames: frames,
0 commit comments