Flutter中如何为类的静态变量调用方法?
解决方案
你的问题核心在于:UITextStyle.body是TextStyle类型的对象,而非UITextStyle的实例,所以它无法调用UITextStyle类里定义的addColor实例方法;而静态方法又无法绑定到具体的TextStyle实例上。
要实现你期望的调用方式,最简洁的方案是使用Dart扩展(Extension),直接给TextStyle类添加自定义方法:
// 定义TextStyle的扩展 extension TextStyleExtension on TextStyle { TextStyle addColor(Color color) { // TextStyle是不可变类,merge会返回新的样式对象,必须返回它 return merge(TextStyle(color: color)); } } class UITextStyle { // 保持原来的静态变量定义 static const TextStyle body = TextStyle(fontSize: 17); }
现在你就可以按照期望的方式调用了:
var styledText = UITextStyle.body.addColor(Color.fromRGBO(0, 0, 0, 1));
补充说明
TextStyle是不可变类,所有修改方法(比如merge)都会返回一个新的TextStyle对象,所以你的addColor方法必须返回这个新对象才能生效。- 扩展方法会作用于所有
TextStyle实例,也就是说你项目里任何地方的TextStyle对象都能调用addColor方法,复用性很强。
内容的提问来源于stack exchange,提问作者Walrus
相关产品推荐
相关产品推荐

