关键词:
【中文标题】如何为颤振添加自定义颜色?【英文标题】:how to add custom color to flutter? 【发布时间】:2018-11-06 01:17:37 【问题描述】:我想更改 AppBar 的颜色并为其使用自定义颜色,我尝试了很多选项,但似乎都不起作用。 我有什么遗漏吗?
import 'package:flutter/material.dart';
final ThemeData CompanyThemeData = new ThemeData(
brightness: Brightness.light,
primaryColorBrightness: Brightness.light,
accentColor: CompanyColors.black[500],
accentColorBrightness: Brightness.light
);
class CompanyColors
CompanyColors._(); // this basically makes it so you can instantiate this class
static const _blackPrimaryValue = 0xFF000000;
static const MaterialColor black = const MaterialColor(
_blackPrimaryValue,
const <int, Color>
50: const Color(0xFFe0e0e0),
100: const Color(0xFFb3b3b3),
200: const Color(0xFF808080),
300: const Color(0xFF4d4d4d),
400: const Color(0xFF262626),
500: const Color(_blackPrimaryValue),
600: const Color(0xFF000000),
700: const Color(0xFF000000),
800: const Color(0xFF000000),
900: const Color(0xFF000000),
,
);
然后我在 main.dart 中使用它作为
Widget build(BuildContext context)
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or press Run > Flutter Hot Reload in IntelliJ). Notice that the
// counter didn't reset back to zero; the application is not restarted.
primarySwatch:Theme1.CompanyColors.black[50],
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
但在执行后它说
颜色类型不是 MaterialColor 子类型
【问题讨论】:
参考-***.com/questions/46595466/… 【参考方案1】:flutter 基本上使用颜色AARRGGBB
格式,您可以在下面的颜色代码中使用任何颜色属性,例如:
new Container(color: const Color(0xff2980b9));
AA = 透明度
RR = 红色
GG = 绿色
BB = 蓝色
现在,如果您想从 6 位颜色代码创建自定义颜色 8 位代码,则只需将透明度 (AA) 值附加到它
透明度百分比 以下是一些示例透明度百分比及其十六进制值
100% - FF
95% - F2
90% - E6
85% - D9
80% - CC
75% - BF
70% - B3
65% - A6
60% - 99
55% - 8C
50% - 80
45% - 73
40% - 66
35% - 59
30% - 4D
25% - 40
20% - 33
15% - 26
10% - 1A
5% - 0D
0% - 00
在我的情况下,我总是使用 AA = ff,因为 6 位颜色具有 ff 透明度。 6位颜色best site
【讨论】:
【参考方案2】:有几种方法可以做到,但this 是我更喜欢使用的方法。这很简单。
创建自定义
MaterialColor myColor = MaterialColor(0xFF880E4F, color);
创建一个贴图,如下所示,我将不透明度通道从 50 修改为 900,以提供各种颜色的不透明度。
Map<int, Color> color =
50:Color.fromRGBO(4,131,184, .1),
100:Color.fromRGBO(4,131,184, .2),
200:Color.fromRGBO(4,131,184, .3),
300:Color.fromRGBO(4,131,184, .4),
400:Color.fromRGBO(4,131,184, .5),
500:Color.fromRGBO(4,131,184, .6),
600:Color.fromRGBO(4,131,184, .7),
700:Color.fromRGBO(4,131,184, .8),
800:Color.fromRGBO(4,131,184, .9),
900:Color.fromRGBO(4,131,184, 1),
;
如果您更喜欢使用 Alpha 而不是不透明度,那么 Color.fromRGBA 也同样适用。
我想指出,我看到您正在尝试这样做。
primarySwatch: Colors.black[500]
这会给你一个错误。您必须使用您创建的基础 MaterialColor。使用色度修饰符会使编译器不高兴。
【讨论】:
它很有帮助,但我不确定不透明度是否真的是设计师想要的色调。想象一下将一种颜色放在具有另一种颜色的图层上。混合起来。【参考方案3】:它是一个MaterialColor
对象(不是Color
),您应该为样本属性分配它,为十种不同的亮度提供颜色值。
许多人建议调整 MaterialColor
中使用的颜色的 alpha/opacity 值。这实际上是一个很大的错误,因为它会导致您的元素半透明而不提供不同色调的颜色。
请考虑使用此解决方案以获得更好的方法。
Flutter: Creating a custom color swatch for MaterialColor
MaterialColor createMaterialColor(Color color)
List strengths = <double>[.05];
final swatch = <int, Color>;
final int r = color.red, g = color.green, b = color.blue;
for (int i = 1; i < 10; i++)
strengths.add(0.1 * i);
strengths.forEach((strength)
final double ds = 0.5 - strength;
swatch[(strength * 1000).round()] = Color.fromRGBO(
r + ((ds < 0 ? r : (255 - r)) * ds).round(),
g + ((ds < 0 ? g : (255 - g)) * ds).round(),
b + ((ds < 0 ? b : (255 - b)) * ds).round(),
1,
);
);
return MaterialColor(color.value, swatch);
【讨论】:
【参考方案4】:您可以创建一个单独的类。
static const PrimaryColor = Color(0xFF808080);
static const PrimaryAssentColor = Color(0xFF808080);
static const PrimaryDarkColor = Color(0xFF808080);
static const ErroColor = Color(0xFF808080);
【讨论】:
【参考方案5】:您不应该在此处末尾添加[50]
:
primarySwatch:Theme1.CompanyColors.black[50]
只需使用您创建的MaterialColor
对象:
primarySwatch:Theme1.CompanyColors.black
我通过创建一个全是红色的MaterialColor
对此进行了测试,并且效果很好:
【讨论】:
【参考方案6】:这很简单。
获取您自定义颜色的HEX
代码。您可以使用 ColorZilla 或 google 之类的颜色选择器。请注意,HEX
代码不区分大小写。我更喜欢资本。
HEX
代码的一个示例类似于#0077CC
。
把#
替换成0xFF
,就变成0xFF0077CC
您的自定义颜色已准备就绪Color(0xFF0077CC)
【讨论】:
【参考方案7】:primarySwatch
的类型为 MaterialColor
,而您将 Color
类型的值传递给它。
你也可以试试这个
primarySwatch:Theme1.CompanyColors.black,
或者改用primaryColor
属性
primaryColor:Theme1.CompanyColors.black[50],
【讨论】:
【参考方案8】:我刚刚创建了一个网站,您可以在其中为您的应用选择 Flutter Colors。你可以用它来选择你想要的任何颜色Flutter Doctor Color Picker
【讨论】:
我又看到了这个,不是我再看一遍,帖子已被删除:( @SamKelham 我相信该帖子仍然存在,因为您正在回复它。如果您有兴趣再次查看该网站。 ------> flutter-color-picker.herokuapp.com 我怎样才能从例如 #ff2200 转到 ARGB 等效项【参考方案9】:你试试:
将十六进制颜色转换为 MaterialColor (Flutter) :http://mcg.mbitson.com/
详情:
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案10】:如果您没有考虑对 MaterialColor 进行深度自定义,并且默认设置就很好,那么这很不错,而且很简单:
static MaterialColor generateMaterialColorFromColor(Color color)
return MaterialColor(color.value,
50: Color.fromRGBO(color.red, color.green, color.blue, 0.1),
100: Color.fromRGBO(color.red, color.green, color.blue, 0.2),
200: Color.fromRGBO(color.red, color.green, color.blue, 0.3),
300: Color.fromRGBO(color.red, color.green, color.blue, 0.4),
400: Color.fromRGBO(color.red, color.green, color.blue, 0.5),
500: Color.fromRGBO(color.red, color.green, color.blue, 0.6),
600: Color.fromRGBO(color.red, color.green, color.blue, 0.7),
700: Color.fromRGBO(color.red, color.green, color.blue, 0.8),
800: Color.fromRGBO(color.red, color.green, color.blue, 0.9),
900: Color.fromRGBO(color.red, color.green, color.blue, 1.0),
);
那么你可以这样使用它:
var materialColor = generateMaterialColorFromColor(Colors.red);
或
// color format is ARGB
var materialColor = generateMaterialColorFromColor(Color(0xFFFF0000));
【讨论】:
【参考方案11】:试试这个:
Colors _thisColor = Color(0xFF3366FF);
【讨论】:
【参考方案12】:我使用了一个简单的 int 解析器,通过在十六进制代码中选择适当的调色板将其定义为 int-parser 中的字符串,用“0xff”前身代替“#”并得到了解决方案, 我实际的十六进制颜色代码是#7CEA9C。无非如下
color: Color(int.parse("0xff7CEA9C")),
【讨论】:
您也可以使用color: Color(xff7CEA9C)
。 0xff7CEA9C
在 dart 中是一个有效的 int 字面量。【参考方案13】:
将以下部分添加到您要更改颜色的部分(按钮,容器..)。
color: Color(0xFFffd57e),
【讨论】:
【参考方案14】:创建一个通用类,如下面的代码 sn-p:
class ColorConstants
static const kPrimaryColor = Color(0xFF394497);
static const kSecondaryColor = Color(0xFF444FAB);
static const kThirdSecondaryColor = Color(0xFF5E6BD8);
static const kGravishBlueColor = Color(0xFF9BA1D2);
要使用特定颜色,sn-p 将如下所示:
color: ColorConstants.kPrimaryColor
【讨论】:
【参考方案15】:Appear 中有一个名为 backgroundColor 的属性。使用它为您的 Appbar 设置任何颜色。您无需更改主题。
【讨论】:
对不起,你不能给AppBar
任何颜色。它必须是完全不透明的。【参考方案16】:
虽然 shade 是整数索引和颜色选项的列表,但它也是 CompanyColors
对象的属性,因此您必须以不同于列表的方式引用它。而且我不是颤振和飞镖方面的专家,但我不确定Theme1
的用途。
//instead of this...
primarySwatch: Theme1.CompanyColors.black[50]
//do this by accessing the shade property of the Colors.black object
//and drop the theme1 thing...allegedly ;)
primarySwatch: CompanyColors.black.shade(500);
【讨论】:
【参考方案17】:首先创建一个createMaterialColor.dart文件
createMaterialColor.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class CreateMaterialColor
MaterialColor createMaterialColor(Color color)
List strengths = <double>[.05];
final swatch = <int, Color>;
final int r = color.red, g = color.green, b = color.blue;
for (int i = 1; i < 10; i++)
strengths.add(0.1 * i);
strengths.forEach((strength)
final double ds = 0.5 - strength;
swatch[(strength * 1000).round()] = Color.fromRGBO(
r + ((ds < 0 ? r : (255 - r)) * ds).round(),
g + ((ds < 0 ? g : (255 - g)) * ds).round(),
b + ((ds < 0 ? b : (255 - b)) * ds).round(),
1,
);
);
return MaterialColor(color.value, swatch);
现在在要使用自定义颜色的 .dart 文件中,比如 first.dart,
先添加这个
import '<path_to>/createMaterialColor.dart';
然后在无状态小部件类中, 像这样先初始化类
final createMaterialColor = CreateMaterialColor();
现在你可以像这样使用这个函数在 first.dart 中生成自定义颜色,例如如果自定义颜色代码是#ffffff,
createMaterialColor.createMaterialColor(Color(0xFFffffff))
【讨论】:
【参考方案18】:试试这个
new Color(0xAARRGGBB)
https://github.com/flutter/engine/blob/master/lib/ui/painting.dart
【讨论】:
NSTableRowView/NSTableCellView 如何为选定的行设置自定义颜色?
】NSTableRowView/NSTableCellView如何为选定的行设置自定义颜色?【英文标题】:NSTableRowView/NSTableCellViewhowtosetcustomcolortoselectedrow?【发布时间】:2014-10-2716:43:04【问题描述】:我正在尝试在选择表格行时实现自定义行颜色。-(void)tableVie... 查看详情
如何为进度条引导程序 4 分配自定义颜色
】如何为进度条引导程序4分配自定义颜色【英文标题】:Howtoassigncustomcolortoprogressbarbootsrap4【发布时间】:2020-08-2710:03:33【问题描述】:伙计们,我有进度条:<divclass="progress"><divclass="progress-bar"style="width:a.49%">a.49%</div... 查看详情
如何为自定义视图选择设置膨胀和颜色变化的动画?
】如何为自定义视图选择设置膨胀和颜色变化的动画?【英文标题】:Howtoanimateaswellandcolorchangeforacustomviewselection?【发布时间】:2014-12-1222:51:18【问题描述】:我有自定义UIView对象的层次结构。叶视图是可选的。他们有一个isSelec... 查看详情
如何为 NavigationView 中的单个菜单项提供自定义图标颜色?
】如何为NavigationView中的单个菜单项提供自定义图标颜色?【英文标题】:HowtogivecustomiconcolorforasinglemenuiteminaNavigationView?【发布时间】:2016-03-2100:23:51【问题描述】:我正在使用安卓导航视图。我想为NavigationView中的某些项目提... 查看详情
如何为 UITableView 添加自定义 EditingAccessoryView?
】如何为UITableView添加自定义EditingAccessoryView?【英文标题】:HowtoaddCustomEditingAccessoryViewforUITableView?【发布时间】:2010-10-2508:01:27【问题描述】:我想在单元格中添加自定义EditingAccessoryView,当用户滑动代替删除按钮时,我想显... 查看详情
如何为 github.io 网站获取自定义不和谐嵌入?
】如何为github.io网站获取自定义不和谐嵌入?【英文标题】:Howtogetcustomdiscordembedsforgithub.iowebsite?【发布时间】:2021-05-1101:01:03【问题描述】:Sourcecode我只是想改变一些东西,比如添加图片,改变蓝条的颜色,添加一些正文等。... 查看详情
如何为 HTML5 日历应用自定义颜色? [复制]
】如何为HTML5日历应用自定义颜色?[复制]【英文标题】:HowtoapplycustomcolorforHTML5calender?[duplicate]【发布时间】:2014-12-2715:03:02【问题描述】:我正在设计一个Web应用程序表单。我正在使用HTML5日历元素。它现在工作正常。但我的... 查看详情
如何为自定义 FontFamily 添加权重?
】如何为自定义FontFamily添加权重?【英文标题】:HowtoaddweighttocustomFontFamily?【发布时间】:2017-04-0701:12:46【问题描述】:我有多个来自同一家族的.ttf文件,例如:MyFont.ttfMyFont_Bold.ttfMyFont_Light.ttfMyFont_Medium.ttf如果我想使用每个权... 查看详情
如何为分析添加 Firebase 自定义事件?
】如何为分析添加Firebase自定义事件?【英文标题】:HowtoaddFirebasecustomeventsforanalytics?【发布时间】:2017-03-2119:37:26【问题描述】:我已经看到一些关于Firebase分析的自定义事件的问题和答案,但我只是想问你一个直截了当的问题... 查看详情
如何为自定义对象的 ArrayList 添加 parcelable 实现?
】如何为自定义对象的ArrayList添加parcelable实现?【英文标题】:HowtoaddtheparcelableimplementationforArrayListofCustomobject?【发布时间】:2021-12-0202:02:55【问题描述】:我创建了一个包含自定义对象的ArrayList和一些其他字符串变量的类。我... 查看详情
如何为自定义 nemo 操作添加键盘快捷键?
】如何为自定义nemo操作添加键盘快捷键?【英文标题】:Howtoaddkeyboardshortcutforcustomnemoaction?【发布时间】:2016-12-2913:46:04【问题描述】:我有一个自定义nemo操作,如下所述:https://wiki.archlinux.org/index.php/Nemo#Nemo_Actions如何为此操... 查看详情
如何为自定义 uicontrol 和控制器添加触摸事件?
】如何为自定义uicontrol和控制器添加触摸事件?【英文标题】:Howtoaddtoucheventforcustomuicontrolandcontroller?【发布时间】:2017-09-1021:50:51【问题描述】:我有一个具有三个子视图的自定义UIControl。每个子视图,我添加一个目标:button.... 查看详情
如何为 GitHub 组织添加自定义用户角色?
】如何为GitHub组织添加自定义用户角色?【英文标题】:HowtoaddcustomuserrolesforaGitHuborganisation?【发布时间】:2016-09-2413:04:15【问题描述】:GitHub上的组织中有两个默认用户角色:“admin”和“member”。如何进一步引入角色并配置其... 查看详情
如何为自定义 UITableView 标题部分笔尖添加分隔线? [复制]
】如何为自定义UITableView标题部分笔尖添加分隔线?[复制]【英文标题】:HowdoIaddaseparatorlineforacustomUITableViewheadersectionnib?[duplicate]【发布时间】:2017-04-2206:56:57【问题描述】:我按照这个答案here中的说明操作并设法获得我的自定... 查看详情
Flask Mail:如何为发件人添加自定义名称?
】FlaskMail:如何为发件人添加自定义名称?【英文标题】:FlaskMail:howtoaddcustomnametothesender?【发布时间】:2019-04-2416:37:11【问题描述】:我正在使用Flask邮件发送电子邮件。一切正常,除了我注意到发件人姓名只是电子邮件的第一... 查看详情
如何为形状添加自定义视图修改器
】如何为形状添加自定义视图修改器【英文标题】:HowcaniaddacustomViewmodifierforShapes【发布时间】:2019-11-2100:15:17【问题描述】:我想用某种修饰符调用我的ImageView以使其中的图像为圆形或方形。代码应如下所示:ImageView(withURL:news... 查看详情
如何为已添加在 UIViewController 之上的 tableView 添加自定义单元格?
】如何为已添加在UIViewController之上的tableView添加自定义单元格?【英文标题】:HowdoIaddcustomcellsforatableViewwhichhasbeenaddedontopofaUIViewController?【发布时间】:2019-08-0211:48:28【问题描述】:我在一个普通的UIViewController类上使用了一个t... 查看详情
颤振图像自定义形状
...eCustomShape【发布时间】:2021-09-1615:41:00【问题描述】:如何为图像创建形状?我需要这样的图像形状;尝试使用容器边框,但我无法像这样管理边框。如何像简单图像一样更改图像的边框?【问题讨论】:您需要为此使用自定义... 查看详情