mirror of
https://github.com/flutter/flutter
synced 2024-10-14 04:02:56 +00:00
Add debug flag debugProfileLayoutsEnabled
. (#63652)
This commit is contained in:
parent
c89402c611
commit
f45cdd57e2
|
@ -121,8 +121,10 @@ bool debugPrintMarkNeedsPaintStacks = false;
|
|||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [debugProfilePaintsEnabled], which does something similar for
|
||||
/// painting but using the timeline view.
|
||||
/// * [debugProfileLayoutsEnabled], which does something similar for layout
|
||||
/// but using the timeline view.
|
||||
/// * [debugProfilePaintsEnabled], which does something similar for painting
|
||||
/// but using the timeline view.
|
||||
/// * [debugPrintRebuildDirtyWidgets], which does something similar for widgets
|
||||
/// being rebuilt.
|
||||
/// * The discussion at [RendererBinding.drawFrame].
|
||||
|
@ -134,6 +136,21 @@ bool debugPrintLayouts = false;
|
|||
/// enabled by the test framework.
|
||||
bool debugCheckIntrinsicSizes = false;
|
||||
|
||||
/// Adds [dart:developer.Timeline] events for every [RenderObject] layout.
|
||||
///
|
||||
/// For details on how to use [dart:developer.Timeline] events in the Dart
|
||||
/// Observatory to optimize your app, see:
|
||||
/// <https://fuchsia.googlesource.com/topaz/+/master/shell/docs/performance.md>
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [debugPrintLayouts], which does something similar for layout but using
|
||||
/// console output.
|
||||
/// * [debugProfileBuildsEnabled], which does something similar for widgets
|
||||
/// being rebuilt.
|
||||
/// * [debugProfilePaintsEnabled], which does something similar for painting.
|
||||
bool debugProfileLayoutsEnabled = false;
|
||||
|
||||
/// Adds [dart:developer.Timeline] events for every [RenderObject] painted.
|
||||
///
|
||||
/// This is only enabled in debug builds. The timing information this exposes is
|
||||
|
@ -146,11 +163,11 @@ bool debugCheckIntrinsicSizes = false;
|
|||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [debugPrintLayouts], which does something similar for layout but using
|
||||
/// console output.
|
||||
/// * [debugProfileBuildsEnabled], which does something similar for widgets
|
||||
/// being rebuilt, and [debugPrintRebuildDirtyWidgets], its console
|
||||
/// equivalent.
|
||||
/// * [debugProfileLayoutsEnabled], which does something similar for layout,
|
||||
/// and [debugPrintLayouts], its console equivalent.
|
||||
/// * The discussion at [RendererBinding.drawFrame].
|
||||
/// * [RepaintBoundary], which can be used to contain repaints when unchanged
|
||||
/// areas are being excessively repainted.
|
||||
|
|
|
@ -1674,6 +1674,9 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
|
|||
/// implemented here) to return early if the child does not need to do any
|
||||
/// work to update its layout information.
|
||||
void layout(Constraints constraints, { bool parentUsesSize = false }) {
|
||||
if (!kReleaseMode && debugProfileLayoutsEnabled)
|
||||
Timeline.startSync('$runtimeType', arguments: timelineArgumentsIndicatingLandmarkEvent);
|
||||
|
||||
assert(constraints != null);
|
||||
assert(constraints.debugAssertIsValid(
|
||||
isAppliedConstraint: true,
|
||||
|
@ -1727,6 +1730,9 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
|
|||
_debugDoingThisResize = false;
|
||||
return true;
|
||||
}());
|
||||
|
||||
if (!kReleaseMode && debugProfileLayoutsEnabled)
|
||||
Timeline.finishSync();
|
||||
return;
|
||||
}
|
||||
_constraints = constraints;
|
||||
|
@ -1789,6 +1795,9 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
|
|||
}());
|
||||
_needsLayout = false;
|
||||
markNeedsPaint();
|
||||
|
||||
if (!kReleaseMode && debugProfileLayoutsEnabled)
|
||||
Timeline.finishSync();
|
||||
}
|
||||
|
||||
/// If a subclass has a "size" (the state controlled by `parentUsesSize`,
|
||||
|
|
|
@ -100,9 +100,11 @@ bool debugPrintGlobalKeyedWidgetLifecycle = false;
|
|||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [debugProfilePaintsEnabled], which does something similar but for
|
||||
/// painting, and [debugPrintRebuildDirtyWidgets], which does something similar
|
||||
/// but reporting the builds to the console.
|
||||
/// * [debugPrintRebuildDirtyWidgets], which does something similar but
|
||||
/// reporting the builds to the console.
|
||||
/// * [debugProfileLayoutsEnabled], which does something similar for layout,
|
||||
/// and [debugPrintLayouts], its console equivalent.
|
||||
/// * [debugProfilePaintsEnabled], which does something similar for painting.
|
||||
bool debugProfileBuildsEnabled = false;
|
||||
|
||||
/// Show banners for deprecated widgets.
|
||||
|
|
Loading…
Reference in a new issue