我正在使用polished
,该书documentation可以在这里阅读,github在这里可以回购。
使用JavaScript编写样式时,许多人都需要Sass样式的辅助函数来提高工作效率。 ✨抛光的包装将它们打包成精美,轻巧的包装,专为JavaScript中的样式量身定制。
我正在使用tint
函数,可以在上面的文档链接中找到使用它的示例:
通过将颜色与白色混合来着色。色调会产生色相偏移,而在变亮时操纵亮度通道,因此不会产生色相偏移。
我有一个主题对象,可以存储我所有的颜色,就像这样:
const object = {
colors: {
myDesiredColor: '#0000FF',
...otherColors
},
};
然后我导出了一些我打算重用的样式。如下所示:
export const containerStyles= css`
color: ${tint(0.5, object.colors.myDesiredColor)};
padding: 17px;
margin-bottom: 10px;
margin-top: 10px;
`;
但是我收到以下错误:
未捕获的错误:发生错误。有关更多信息,请参见https://github.com/styled-components/polished/blob/master/src/error/errors.md#5。
不幸的是,以上代码返回了404 Error
,所以我看不到它在说什么。
我碰到了这个enter link description here的stackoverflow帖子,该帖子确实有用,但并不是我要找的东西,因为我也在其他地方使用了这种方法,因此不适合在这种情况下使用。因此,理想情况下,我只想在提取主题对象颜色后传递一个变量。
const getMyColor = ({ object }) => object.colors.myDesiredColor;
export const containerStyles= css`
color: ${tint(0.5, getMyColor)};
padding: 17px;
margin-bottom: 10px;
margin-top: 10px;
`;
上面是我想要的。这样我就可以在其他用例中轻松地调用它。但是我遇到了同样的错误。
我知道(相信)这与我在第二个参数中传递的方式有关。我知道它需要一个字符串,并且我假设它没有收到字符串,但我不知道如何解决。
我遇到过这篇文章,here,但再次不确定这是否是我想要的。
任何帮助将不胜感激
答案 0 :(得分:1)
对此晚了晚了,但是您的问题是class _LoginFormState extends State<LoginForm> {
String _username = "";
String __password = "";
void ToogleState( text){
setState(() {
_username = text;
});
}
//Widget
TextField(
onChanged: (text){ToogleState( text); print(username);},
decoration: InputDecoration(
hintText: 'input username', labelText: 'Username'
),
),
}
是一个函数,而getMyColor
期望您所声明的字符串。我们不评估传递给任何颜色模块的功能,因此在传递tint
时必须对其进行评估。所以类似这样:
getMyColor
答案 1 :(得分:0)
尝试调用您的函数(getMyColor())并查看响应,如果它不是字符串,则可以解决问题。