@@ -7,6 +7,7 @@ import 'dart:math' as math;
7
7
8
8
import 'package:devtools_app_shared/ui.dart' ;
9
9
import 'package:devtools_app_shared/utils.dart' ;
10
+ import 'package:flutter/foundation.dart' ;
10
11
import 'package:flutter/material.dart' ;
11
12
12
13
import '../../../../shared/analytics/analytics.dart' as ga;
@@ -39,7 +40,7 @@ class FlutterFramesChart extends StatelessWidget {
39
40
40
41
final bool showingOfflineData;
41
42
42
- final bool impellerEnabled;
43
+ final ValueListenable < bool > impellerEnabled;
43
44
44
45
@override
45
46
Widget build (BuildContext context) {
@@ -86,7 +87,7 @@ class _FlutterFramesChart extends StatefulWidget {
86
87
87
88
final bool showingOfflineData;
88
89
89
- final bool impellerEnabled;
90
+ final ValueListenable < bool > impellerEnabled;
90
91
91
92
static double get frameNumberSectionHeight => scaleByFontFactor (20.0 );
92
93
@@ -203,7 +204,7 @@ class FramesChart extends StatefulWidget {
203
204
204
205
final BoxConstraints constraints;
205
206
206
- final bool impellerEnabled;
207
+ final ValueListenable < bool > impellerEnabled;
207
208
208
209
@override
209
210
State <FramesChart > createState () => _FramesChartState ();
@@ -346,13 +347,18 @@ class _FramesChartState extends State<FramesChart> with AutoDisposeMixin {
346
347
chartAxisPainter,
347
348
Padding (padding: EdgeInsets .only (left: _yAxisUnitsSpace), child: chart),
348
349
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
+ },
356
362
),
357
363
],
358
364
);
@@ -382,7 +388,7 @@ class FramesChartControls extends StatelessWidget {
382
388
383
389
final bool showingOfflineData;
384
390
385
- final bool impellerEnabled;
391
+ final ValueListenable < bool > impellerEnabled;
386
392
387
393
@override
388
394
Widget build (BuildContext context) {
@@ -408,21 +414,26 @@ class FramesChartControls extends StatelessWidget {
408
414
);
409
415
},
410
416
),
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
+ },
426
437
),
427
438
AverageFPS (
428
439
frames: frames,
0 commit comments