Skip to content

Commit c55ab5c

Browse files
committed
QUICKFIX Background Color Widget
*FIX background color incorrectly used as a widget. *Add tests to validate fix.
1 parent 4c63ac4 commit c55ab5c

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

example

lib/responsive_wrapper.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,8 @@ class _ResponsiveWrapperState extends State<ResponsiveWrapper>
483483
Widget build(BuildContext context) {
484484
return (screenWidth ==
485485
0) // Initialization check. Window measurements not available until postFrameCallback.
486-
? (widget.backgroundColor ??
487-
Container(
488-
color: Color(
489-
0xFFFFFFFF))) // First frame empty background color or default white.
486+
? buildBackgroundColorWidget(widget
487+
.backgroundColor) // First frame empty background color or default white.
490488
: InheritedResponsiveWrapper(
491489
data: ResponsiveWrapperData.fromResponsiveWrapper(this),
492490
child: Stack(
@@ -541,6 +539,13 @@ class _ResponsiveWrapperState extends State<ResponsiveWrapper>
541539
viewPadding: scaledViewPadding,
542540
padding: scaledPadding);
543541
}
542+
543+
/// Builds a container with [color].
544+
/// Defaults to a white background.
545+
Widget buildBackgroundColorWidget(Color color) {
546+
if (color == null) return Container(color: Color(0xFFFFFFFF));
547+
return Container(color: color);
548+
}
544549
}
545550

546551
// Device Type Constants.

test/responsive_wrapper_test.dart

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,39 @@ void main() {
269269
// Scale factor is 4.
270270
expect(state.screenWidth, 200);
271271
});
272+
273+
testWidgets('Background Color', (WidgetTester tester) async {
274+
// 0 width to simulate screen loading.
275+
setScreenSize(tester, Size(0, 1200));
276+
Widget widget = MaterialApp(
277+
builder: (context, widget) =>
278+
ResponsiveWrapper.builder(widget, backgroundColor: Colors.amber),
279+
home: Container(),
280+
);
281+
// Pump once to trigger one frame build.
282+
await tester.pumpWidget(widget);
283+
// Expect only a container with color.
284+
WidgetPredicate widgetPredicate = (Widget widget) =>
285+
widget is Container && widget.color == Colors.amber;
286+
// Confirm defaults.
287+
expect(find.byWidgetPredicate(widgetPredicate), findsOneWidget);
288+
});
289+
290+
testWidgets('Background Color Null', (WidgetTester tester) async {
291+
// 0 width to simulate screen loading.
292+
setScreenSize(tester, Size(0, 1200));
293+
Widget widget = MaterialApp(
294+
builder: (context, widget) => ResponsiveWrapper.builder(widget),
295+
home: Container(),
296+
);
297+
// Pump once to trigger one frame build.
298+
await tester.pumpWidget(widget);
299+
// Expect only a container with default white color.
300+
WidgetPredicate widgetPredicate = (Widget widget) =>
301+
widget is Container && widget.color == Colors.white;
302+
// Confirm defaults.
303+
expect(find.byWidgetPredicate(widgetPredicate), findsOneWidget);
304+
});
272305
});
273306

274307
group('ResponsiveBreakpoint', () {

0 commit comments

Comments
 (0)