Refactor dark mode color blending to extension method

Moved dark mode color blending logic to a Color extension (toDark) in the design system. Updated usages in ui_utils.dart and related tests to use the new extension. Removed the old getDarkModeColor function for cleaner and more idiomatic code organization.
This commit is contained in:
Ankit Mahato
2025-08-05 21:17:39 +05:30
parent d1fe07ac8d
commit be16016d95
5 changed files with 24 additions and 30 deletions

View File

@ -21,7 +21,7 @@ Color getResponseStatusCodeColor(int? statusCode,
} }
} }
if (brightness == Brightness.dark) { if (brightness == Brightness.dark) {
col = getDarkModeColor(col); col = col.toDark;
} }
return col; return col;
} }
@ -38,7 +38,7 @@ Color getAPIColor(
APIType.graphql => kColorGQL, APIType.graphql => kColorGQL,
}; };
if (brightness == Brightness.dark) { if (brightness == Brightness.dark) {
col = getDarkModeColor(col); col = col.toDark;
} }
return col; return col;
} }
@ -57,13 +57,6 @@ Color getHTTPMethodColor(HTTPVerb? method) {
return col; return col;
} }
Color getDarkModeColor(Color col) {
return Color.alphaBlend(
col.withValues(alpha: kOpacityDarkModeBlend),
kColorWhite,
);
}
double? getJsonPreviewerMaxRootNodeWidth(double w) { double? getJsonPreviewerMaxRootNodeWidth(double w) {
if (w < 300) { if (w < 300) {
return 150; return 150;

View File

@ -0,0 +1,9 @@
import 'package:flutter/material.dart';
import '../tokens/colors.dart';
extension ColorExtension on Color {
Color get toDark => Color.alphaBlend(
withValues(alpha: kOpacityDarkModeBlend),
kColorWhite,
);
}

View File

@ -1 +1,2 @@
export 'color_extensions.dart';
export 'context_extensions.dart'; export 'context_extensions.dart';

View File

@ -13,8 +13,7 @@ void main() {
expect(getResponseStatusCodeColor(statusCode1), kColorStatusCode200); expect(getResponseStatusCodeColor(statusCode1), kColorStatusCode200);
}); });
Color colStatusCode1DarkModeExpected = Color colStatusCode1DarkModeExpected = kColorStatusCode200.toDark;
getDarkModeColor(kColorStatusCode200);
test('Testing getResponseStatusCodeColor for statusCode 200 dark mode', () { test('Testing getResponseStatusCodeColor for statusCode 200 dark mode', () {
expect(getResponseStatusCodeColor(statusCode1, brightness: dark), expect(getResponseStatusCodeColor(statusCode1, brightness: dark),
colStatusCode1DarkModeExpected); colStatusCode1DarkModeExpected);
@ -25,8 +24,7 @@ void main() {
expect(getResponseStatusCodeColor(statusCode2), kColorStatusCode300); expect(getResponseStatusCodeColor(statusCode2), kColorStatusCode300);
}); });
Color colStatusCode2DarkModeExpected = Color colStatusCode2DarkModeExpected = kColorStatusCode300.toDark;
getDarkModeColor(kColorStatusCode300);
test('Testing getResponseStatusCodeColor for statusCode 300 dark mode', () { test('Testing getResponseStatusCodeColor for statusCode 300 dark mode', () {
expect(getResponseStatusCodeColor(statusCode2, brightness: dark), expect(getResponseStatusCodeColor(statusCode2, brightness: dark),
colStatusCode2DarkModeExpected); colStatusCode2DarkModeExpected);
@ -37,8 +35,7 @@ void main() {
expect(getResponseStatusCodeColor(statusCode3), kColorStatusCode400); expect(getResponseStatusCodeColor(statusCode3), kColorStatusCode400);
}); });
Color colStatusCode3DarkModeExpected = Color colStatusCode3DarkModeExpected = kColorStatusCode400.toDark;
getDarkModeColor(kColorStatusCode400);
test('Testing getResponseStatusCodeColor for statusCode 404 dark mode', () { test('Testing getResponseStatusCodeColor for statusCode 404 dark mode', () {
expect(getResponseStatusCodeColor(statusCode3, brightness: dark), expect(getResponseStatusCodeColor(statusCode3, brightness: dark),
colStatusCode3DarkModeExpected); colStatusCode3DarkModeExpected);
@ -50,8 +47,7 @@ void main() {
expect(getResponseStatusCodeColor(statusCode4), kColorStatusCode500); expect(getResponseStatusCodeColor(statusCode4), kColorStatusCode500);
}); });
Color colStatusCode4DarkModeExpected = Color colStatusCode4DarkModeExpected = kColorStatusCode500.toDark;
getDarkModeColor(kColorStatusCode500);
test('Testing getResponseStatusCodeColor for statusCode 503 dark mode', () { test('Testing getResponseStatusCodeColor for statusCode 503 dark mode', () {
expect(getResponseStatusCodeColor(statusCode4, brightness: dark), expect(getResponseStatusCodeColor(statusCode4, brightness: dark),
colStatusCode4DarkModeExpected); colStatusCode4DarkModeExpected);
@ -63,8 +59,7 @@ void main() {
expect(getResponseStatusCodeColor(statusCode5), kColorStatusCodeDefault); expect(getResponseStatusCodeColor(statusCode5), kColorStatusCodeDefault);
}); });
Color colStatusCode5DarkModeExpected = Color colStatusCode5DarkModeExpected = kColorStatusCodeDefault.toDark;
getDarkModeColor(kColorStatusCodeDefault);
test('Testing getResponseStatusCodeColor for statusCode 101 dark mode', () { test('Testing getResponseStatusCodeColor for statusCode 101 dark mode', () {
expect(getResponseStatusCodeColor(statusCode5, brightness: dark), expect(getResponseStatusCodeColor(statusCode5, brightness: dark),
colStatusCode5DarkModeExpected); colStatusCode5DarkModeExpected);
@ -73,7 +68,7 @@ void main() {
group("Testing getAPIColor function", () { group("Testing getAPIColor function", () {
HTTPVerb methodGet = HTTPVerb.get; HTTPVerb methodGet = HTTPVerb.get;
Color colMethodGetDarkModeExpected = getDarkModeColor(kColorHttpMethodGet); Color colMethodGetDarkModeExpected = kColorHttpMethodGet.toDark;
test('Test getAPIColor for GET method dark mode', () { test('Test getAPIColor for GET method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(
@ -85,8 +80,7 @@ void main() {
}); });
HTTPVerb methodHead = HTTPVerb.head; HTTPVerb methodHead = HTTPVerb.head;
Color colMethodHeadDarkModeExpected = Color colMethodHeadDarkModeExpected = kColorHttpMethodHead.toDark;
getDarkModeColor(kColorHttpMethodHead);
test('Test getHTTPMethodColor for HEAD Method dark mode', () { test('Test getHTTPMethodColor for HEAD Method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(
@ -98,8 +92,7 @@ void main() {
}); });
HTTPVerb methodPatch = HTTPVerb.patch; HTTPVerb methodPatch = HTTPVerb.patch;
Color colMethodPatchDarkModeExpected = Color colMethodPatchDarkModeExpected = kColorHttpMethodPatch.toDark;
getDarkModeColor(kColorHttpMethodPatch);
test('Test getHTTPMethodColor for PATCH Method dark mode', () { test('Test getHTTPMethodColor for PATCH Method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(
@ -111,7 +104,7 @@ void main() {
}); });
HTTPVerb methodPut = HTTPVerb.put; HTTPVerb methodPut = HTTPVerb.put;
Color colMethodPutDarkModeExpected = getDarkModeColor(kColorHttpMethodPut); Color colMethodPutDarkModeExpected = kColorHttpMethodPut.toDark;
test('Test getHTTPMethodColor for PUT Method dark mode', () { test('Test getHTTPMethodColor for PUT Method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(
@ -123,8 +116,7 @@ void main() {
}); });
HTTPVerb methodPost = HTTPVerb.post; HTTPVerb methodPost = HTTPVerb.post;
Color colMethodPostDarkModeExpected = Color colMethodPostDarkModeExpected = kColorHttpMethodPost.toDark;
getDarkModeColor(kColorHttpMethodPost);
test('Test getHTTPMethodColor for POST Method dark mode', () { test('Test getHTTPMethodColor for POST Method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(
@ -136,8 +128,7 @@ void main() {
}); });
HTTPVerb methodDelete = HTTPVerb.delete; HTTPVerb methodDelete = HTTPVerb.delete;
Color colMethodDeleteDarkModeExpected = Color colMethodDeleteDarkModeExpected = kColorHttpMethodDelete.toDark;
getDarkModeColor(kColorHttpMethodDelete);
test('Test getHTTPMethodColor for DELETE Method dark mode', () { test('Test getHTTPMethodColor for DELETE Method dark mode', () {
expect( expect(
getAPIColor( getAPIColor(

View File

@ -49,7 +49,7 @@ void main() {
expect(find.byType(SizedBox), findsOneWidget); expect(find.byType(SizedBox), findsOneWidget);
expect(find.text('DEL'), findsOneWidget); expect(find.text('DEL'), findsOneWidget);
expect(find.text('GET'), findsNothing); expect(find.text('GET'), findsNothing);
Color colDelDarkMode = getDarkModeColor(kColorHttpMethodDelete); Color colDelDarkMode = kColorHttpMethodDelete.toDark;
final delTextWithColor = find.byWidgetPredicate( final delTextWithColor = find.byWidgetPredicate(
(widget) => widget is Text && widget.style!.color == colDelDarkMode); (widget) => widget is Text && widget.style!.color == colDelDarkMode);
expect(delTextWithColor, findsOneWidget); expect(delTextWithColor, findsOneWidget);