From 08f70164f4cd9c90dae907aef2ea0c1bae82e085 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Mon, 12 Sep 2022 22:59:17 +0800 Subject: [PATCH] refactor: css color parse --- lib/utils/utils.dart | 22 +++++----------------- lib/widgets/contribution.dart | 7 ++++--- lib/widgets/gists_item.dart | 7 ++++--- lib/widgets/hex_color_tag.dart | 4 ++-- lib/widgets/language_bar.dart | 7 ++++--- lib/widgets/repository_item.dart | 9 +++++---- pubspec.lock | 7 +++++++ pubspec.yaml | 1 + 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 3c2810f..de07b22 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -1,17 +1,19 @@ -import 'package:universal_io/io.dart'; -import 'package:flutter/material.dart'; import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/widgets/border_view.dart'; import 'package:intl/intl.dart'; import 'package:primer/primer.dart'; import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; +import 'package:universal_io/io.dart'; import 'package:url_launcher/url_launcher.dart'; -export 'extensions.dart'; + export 'package:flutter_vector_icons/flutter_vector_icons.dart' show Octicons, Ionicons; +export 'extensions.dart'; + class StorageKeys { @deprecated static const account = 'account'; @@ -40,20 +42,6 @@ class CommonStyle { static final monospace = Platform.isIOS ? 'Menlo' : 'monospace'; // FIXME: } -Color convertColor(String? cssHex) { - if (cssHex == null) { - return const Color(0xffededed); // Default color - } - - if (cssHex.startsWith('#')) { - cssHex = cssHex.substring(1); - } - if (cssHex.length == 3) { - cssHex = cssHex.split('').map((char) => char + char).join(''); - } - return Color(int.tryParse('ff$cssHex', radix: 16) ?? 0); -} - Color getFontColorByBrightness(Color color) { var grayscale = color.red * 0.3 + color.green * 0.59 + color.blue * 0.11; // Fimber.d('color: $color, $grayscale'); diff --git a/lib/widgets/contribution.dart b/lib/widgets/contribution.dart index bb963a8..df34534 100644 --- a/lib/widgets/contribution.dart +++ b/lib/widgets/contribution.dart @@ -1,6 +1,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; +import 'package:from_css_color/from_css_color.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:provider/provider.dart'; @@ -86,10 +87,10 @@ class ContributionWidget extends StatelessWidget { height: 10, child: DecoratedBox( decoration: BoxDecoration( - color: convertColor( + color: fromCssColor( theme.brightness == Brightness.dark - ? darkMapper[day.hexColor!] - : day.hexColor, + ? darkMapper[day.hexColor!]! + : day.hexColor!, ), borderRadius: BorderRadius.circular(2)), ), diff --git a/lib/widgets/gists_item.dart b/lib/widgets/gists_item.dart index 5d4293b..8d06e51 100644 --- a/lib/widgets/gists_item.dart +++ b/lib/widgets/gists_item.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:from_css_color/from_css_color.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/link.dart'; +import 'package:github/github.dart' as github; import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; -import 'package:github/github.dart' as github; class GistsItem extends StatelessWidget { final String? description; @@ -102,8 +103,8 @@ class GistsItem extends StatelessWidget { width: 12, height: 12, decoration: BoxDecoration( - color: convertColor( - github.languageColors[language!]), + color: fromCssColor( + github.languageColors[language!]!), shape: BoxShape.circle, ), ), diff --git a/lib/widgets/hex_color_tag.dart b/lib/widgets/hex_color_tag.dart index fe57734..366188f 100644 --- a/lib/widgets/hex_color_tag.dart +++ b/lib/widgets/hex_color_tag.dart @@ -1,6 +1,6 @@ import 'package:antd_mobile/antd_mobile.dart'; import 'package:flutter/material.dart'; -import 'package:git_touch/utils/utils.dart'; +import 'package:from_css_color/from_css_color.dart'; class HexColorTag extends StatelessWidget { final String name; @@ -16,7 +16,7 @@ class HexColorTag extends StatelessWidget { Widget build(BuildContext context) { return AntTag( round: true, - color: convertColor(color), + color: fromCssColor(color), child: Text(name), ); } diff --git a/lib/widgets/language_bar.dart b/lib/widgets/language_bar.dart index cfdab52..a224782 100644 --- a/lib/widgets/language_bar.dart +++ b/lib/widgets/language_bar.dart @@ -1,8 +1,9 @@ import 'package:flutter/cupertino.dart'; +import 'package:from_css_color/from_css_color.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/utils/utils.dart'; -import 'package:provider/provider.dart'; import 'package:github/github.dart' as github; +import 'package:provider/provider.dart'; class LanguageBarItem { String? name; @@ -45,7 +46,7 @@ class LanguageBar extends StatelessWidget { const SizedBox(width: 1), items .map((lang) => Container( - color: convertColor(lang.hexColor), + color: fromCssColor(lang.hexColor!), width: langWidth * lang.ratio!)) .toList(), ), @@ -73,7 +74,7 @@ class LanguageBar extends StatelessWidget { width: 18, height: 18, decoration: BoxDecoration( - color: convertColor(edge.hexColor), + color: fromCssColor(edge.hexColor!), shape: BoxShape.circle, ), ), diff --git a/lib/widgets/repository_item.dart b/lib/widgets/repository_item.dart index 483dd64..d04a249 100644 --- a/lib/widgets/repository_item.dart +++ b/lib/widgets/repository_item.dart @@ -1,5 +1,6 @@ -import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:from_css_color/from_css_color.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/gitlab.dart'; @@ -8,9 +9,9 @@ import 'package:git_touch/models/theme.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/link.dart'; +import 'package:github/github.dart' as github; import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; -import 'package:github/github.dart' as github; class RepositoryItem extends StatelessWidget { final String? owner; @@ -224,8 +225,8 @@ class RepositoryItem extends StatelessWidget { width: 12, height: 12, decoration: BoxDecoration( - color: convertColor(primaryLanguageColor ?? - github.languageColors[primaryLanguageName!]), + color: fromCssColor(primaryLanguageColor ?? + github.languageColors[primaryLanguageName!]!), shape: BoxShape.circle, ), ), diff --git a/pubspec.lock b/pubspec.lock index bd115bb..16d9dee 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -322,6 +322,13 @@ packages: description: flutter source: sdk version: "0.0.0" + from_css_color: + dependency: "direct main" + description: + name: from_css_color + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" frontend_server_client: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a627415..830f5a7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,6 +67,7 @@ dependencies: pub_semver: google_fonts: go_router: + from_css_color: antd_mobile: path: ../ant-design-mobile-flutter