Unverified Commit 8e8acaac authored by Yuqian Li's avatar Yuqian Li Committed by GitHub

Add Overflow back with deprecation (#66305)

parent 33d01519
......@@ -268,6 +268,24 @@ enum StackFit {
passthrough,
}
/// Whether overflowing children should be clipped, or their overflow be
/// visible.
///
/// Deprecated. Use [Stack.clipBehavior] instead.
@Deprecated(
'Use clipBehavior instead. See the migration guide in flutter.dev/go/clip-behavior. '
'This feature was deprecated after v1.22.0-12.0.pre.'
)
enum Overflow {
/// Overflowing children will be visible.
///
/// The visible overflow area will not accept hit testing.
visible,
/// Overflowing children will be clipped to the bounds of their parent.
clip,
}
/// Implements the stack layout algorithm.
///
/// In a stack layout, the children are positioned on top of each other in the
......
......@@ -42,6 +42,7 @@ export 'package:flutter/rendering.dart' show
MainAxisAlignment,
MainAxisSize,
MultiChildLayoutDelegate,
Overflow,
PaintingContext,
PointerCancelEvent,
PointerCancelEventListener,
......@@ -3275,6 +3276,11 @@ class Stack extends MultiChildRenderObjectWidget {
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
@Deprecated(
'Use clipBehavior instead. See the migration guide in flutter.dev/go/clip-behavior. '
'This feature was deprecated after v1.22.0-12.0.pre.'
)
this.overflow = Overflow.clip,
this.clipBehavior = Clip.hardEdge,
List<Widget> children = const <Widget>[],
}) : assert(clipBehavior != null),
......@@ -3315,6 +3321,24 @@ class Stack extends MultiChildRenderObjectWidget {
/// ([StackFit.expand]).
final StackFit fit;
/// Whether overflowing children should be clipped. See [Overflow].
///
/// Some children in a stack might overflow its box. When this flag is set to
/// [Overflow.clip], children cannot paint outside of the stack's box.
///
/// When set to [Overflow.visible], the visible overflow area will not accept
/// hit testing.
///
/// This overrides [clipBehavior] for now due to a staged roll out.
/// We will remove it and only use [clipBehavior] soon.
///
/// Deprecated. Use [clipBehavior] instead.
@Deprecated(
'Use clipBehavior instead. See the migration guide in flutter.dev/go/clip-behavior. '
'This feature was deprecated after v1.22.0-12.0.pre.'
)
final Overflow overflow;
/// {@macro flutter.widgets.Clip}
///
/// Defaults to [Clip.hardEdge].
......@@ -3339,7 +3363,7 @@ class Stack extends MultiChildRenderObjectWidget {
alignment: alignment,
textDirection: textDirection ?? Directionality.of(context),
fit: fit,
clipBehavior: clipBehavior,
clipBehavior: overflow == Overflow.visible ? Clip.none : clipBehavior,
);
}
......@@ -3350,7 +3374,7 @@ class Stack extends MultiChildRenderObjectWidget {
..alignment = alignment
..textDirection = textDirection ?? Directionality.of(context)
..fit = fit
..clipBehavior = clipBehavior;
..clipBehavior = overflow == Overflow.visible ? Clip.none : clipBehavior;
}
@override
......
......@@ -453,6 +453,7 @@ void main() {
textDirection: TextDirection.ltr,
child: Center(
child: Stack(
overflow: Overflow.visible,
clipBehavior: Clip.none,
children: const <Widget>[
SizedBox(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment