Enable configuring minHeight for LinearProgressIndicator and update default to match spec (#55482)
This commit is contained in:
parent
cb88d2a3af
commit
fc77aea34e
@ -10,7 +10,6 @@ import 'package:flutter/widgets.dart';
|
||||
import 'material.dart';
|
||||
import 'theme.dart';
|
||||
|
||||
const double _kLinearProgressIndicatorHeight = 6.0;
|
||||
const double _kMinCircularProgressIndicatorSize = 36.0;
|
||||
const int _kIndeterminateLinearDuration = 1800;
|
||||
|
||||
@ -221,6 +220,9 @@ class _LinearProgressIndicatorPainter extends CustomPainter {
|
||||
/// The indicator line is displayed with [valueColor], an animated value. To
|
||||
/// specify a constant color value use: `AlwaysStoppedAnimation<Color>(color)`.
|
||||
///
|
||||
/// The minimum height of the indicator can be specified using [minHeight].
|
||||
/// The indicator can be made taller by wrapping the widget with a [SizedBox].
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [CircularProgressIndicator], which shows progress along a circular arc.
|
||||
@ -236,9 +238,11 @@ class LinearProgressIndicator extends ProgressIndicator {
|
||||
double value,
|
||||
Color backgroundColor,
|
||||
Animation<Color> valueColor,
|
||||
this.minHeight,
|
||||
String semanticsLabel,
|
||||
String semanticsValue,
|
||||
}) : super(
|
||||
}) : assert(minHeight == null || minHeight > 0),
|
||||
super(
|
||||
key: key,
|
||||
value: value,
|
||||
backgroundColor: backgroundColor,
|
||||
@ -247,6 +251,11 @@ class LinearProgressIndicator extends ProgressIndicator {
|
||||
semanticsValue: semanticsValue,
|
||||
);
|
||||
|
||||
/// The minimum height of the line used to draw the indicator.
|
||||
///
|
||||
/// This defaults to 4dp.
|
||||
final double minHeight;
|
||||
|
||||
@override
|
||||
_LinearProgressIndicatorState createState() => _LinearProgressIndicatorState();
|
||||
}
|
||||
@ -284,9 +293,9 @@ class _LinearProgressIndicatorState extends State<LinearProgressIndicator> with
|
||||
return widget._buildSemanticsWrapper(
|
||||
context: context,
|
||||
child: Container(
|
||||
constraints: const BoxConstraints(
|
||||
constraints: BoxConstraints(
|
||||
minWidth: double.infinity,
|
||||
minHeight: _kLinearProgressIndicatorHeight,
|
||||
minHeight: widget.minHeight ?? 4.0,
|
||||
),
|
||||
child: CustomPaint(
|
||||
painter: _LinearProgressIndicatorPainter(
|
||||
|
@ -49,6 +49,27 @@ void main() {
|
||||
handle.dispose();
|
||||
});
|
||||
|
||||
testWidgets('LinearProgressIndicator custom minHeight', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
const Directionality(
|
||||
textDirection: TextDirection.ltr,
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
width: 200.0,
|
||||
child: LinearProgressIndicator(value: 0.25, minHeight: 2.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 2.0))
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 50.0, 2.0)),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('LinearProgressIndicator paint (LTR)', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
const Directionality(
|
||||
@ -65,8 +86,8 @@ void main() {
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 6.0))
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 50.0, 6.0)),
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 4.0))
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 50.0, 4.0)),
|
||||
);
|
||||
|
||||
expect(tester.binding.transientCallbackCount, 0);
|
||||
@ -88,8 +109,8 @@ void main() {
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 6.0))
|
||||
..rect(rect: const Rect.fromLTRB(150.0, 0.0, 200.0, 6.0)),
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 4.0))
|
||||
..rect(rect: const Rect.fromLTRB(150.0, 0.0, 200.0, 4.0)),
|
||||
);
|
||||
|
||||
expect(tester.binding.transientCallbackCount, 0);
|
||||
@ -115,8 +136,8 @@ void main() {
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 6.0))
|
||||
..rect(rect: Rect.fromLTRB(0.0, 0.0, animationValue * 200.0, 6.0)),
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 4.0))
|
||||
..rect(rect: Rect.fromLTRB(0.0, 0.0, animationValue * 200.0, 4.0)),
|
||||
);
|
||||
|
||||
expect(tester.binding.transientCallbackCount, 1);
|
||||
@ -142,8 +163,8 @@ void main() {
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 6.0))
|
||||
..rect(rect: Rect.fromLTRB(200.0 - animationValue * 200.0, 0.0, 200.0, 6.0)),
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 4.0))
|
||||
..rect(rect: Rect.fromLTRB(200.0 - animationValue * 200.0, 0.0, 200.0, 4.0)),
|
||||
);
|
||||
|
||||
expect(tester.binding.transientCallbackCount, 1);
|
||||
@ -169,8 +190,8 @@ void main() {
|
||||
expect(
|
||||
find.byType(LinearProgressIndicator),
|
||||
paints
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 6.0))
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 50.0, 6.0), color: Colors.white),
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 4.0))
|
||||
..rect(rect: const Rect.fromLTRB(0.0, 0.0, 50.0, 4.0), color: Colors.white),
|
||||
);
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user