Fixed ProgressIndicatorTheme.wrap() to just return a new ProgressIndicatorTheme. (#81359)

This commit is contained in:
Darren Austin 2021-04-28 12:06:37 -07:00 committed by GitHub
parent f6726b425d
commit f4dee5c62e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 2 deletions

View file

@ -177,8 +177,7 @@ class ProgressIndicatorTheme extends InheritedTheme {
@override
Widget wrap(BuildContext context, Widget child) {
final ProgressIndicatorTheme? ancestorTheme = context.findAncestorWidgetOfExactType<ProgressIndicatorTheme>();
return identical(this, ancestorTheme) ? child : ProgressIndicatorTheme(data: data, child: child);
return ProgressIndicatorTheme(data: data, child: child);
}
@override

View file

@ -826,4 +826,35 @@ void main() {
TargetPlatform.linux,
}),
);
testWidgets('ProgressIndicatorTheme.wrap() always creates a new ProgressIndicatorTheme', (WidgetTester tester) async {
late BuildContext builderContext;
const ProgressIndicatorThemeData themeData = ProgressIndicatorThemeData(
color: Color(0xFFFF0000),
linearTrackColor: Color(0xFF00FF00),
);
final ProgressIndicatorTheme progressTheme = ProgressIndicatorTheme(
data: themeData,
child: Builder(
builder: (BuildContext context) {
builderContext = context;
return const LinearProgressIndicator(value: 0.5);
}
),
);
await tester.pumpWidget(MaterialApp(
home: progressTheme,
));
final Widget wrappedTheme = progressTheme.wrap(builderContext, Container());
// Make sure the returned widget is a new ProgressIndicatorTheme instance
// with the same theme data as the original.
expect(wrappedTheme, isNot(equals(progressTheme)));
expect(wrappedTheme, isInstanceOf<ProgressIndicatorTheme>());
expect((wrappedTheme as ProgressIndicatorTheme).data, themeData);
});
}