1// Copyright 2014 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5/// @docImport 'package:flutter/material.dart';
6///
7/// @docImport 'app.dart';
8library;
9
10import 'package:flutter/rendering.dart';
11
12import 'framework.dart';
13
14/// Displays performance statistics.
15///
16/// The overlay shows two time series. The first shows how much time was
17/// required on this thread to produce each frame. The second shows how much
18/// time was required on the raster thread (formerly known as the GPU thread)
19/// to produce each frame. Ideally, both these values would be less than
20/// the total frame budget for the hardware on which the app is running.
21/// For example, if the hardware has a screen that updates at 60 Hz, each
22/// thread should ideally spend less than 16ms producing each frame.
23/// This ideal condition is indicated by a green vertical line for each thread.
24/// Otherwise, the performance overlay shows a red vertical line.
25///
26/// The simplest way to show the performance overlay is to set
27/// [MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]
28/// to true.
29class PerformanceOverlay extends LeafRenderObjectWidget {
30 /// Create a performance overlay that only displays specific statistics. The
31 /// mask is created by shifting 1 by the index of the specific
32 /// [PerformanceOverlayOption] to enable.
33 const PerformanceOverlay({super.key, this.optionsMask = 0});
34
35 /// Create a performance overlay that displays all available statistics.
36 PerformanceOverlay.allEnabled({super.key})
37 : optionsMask =
38 1 << PerformanceOverlayOption.displayRasterizerStatistics.index |
39 1 << PerformanceOverlayOption.visualizeRasterizerStatistics.index |
40 1 << PerformanceOverlayOption.displayEngineStatistics.index |
41 1 << PerformanceOverlayOption.visualizeEngineStatistics.index;
42
43 /// The mask is created by shifting 1 by the index of the specific
44 /// [PerformanceOverlayOption] to enable.
45 final int optionsMask;
46
47 @override
48 RenderPerformanceOverlay createRenderObject(BuildContext context) =>
49 RenderPerformanceOverlay(optionsMask: optionsMask);
50
51 @override
52 void updateRenderObject(BuildContext context, RenderPerformanceOverlay renderObject) {
53 renderObject.optionsMask = optionsMask;
54 }
55}
56

Provided by KDAB

Privacy Policy
Learn more about Flutter for embedded and desktop on industrialflutter.com