如何将方法应用于类中的静态变量.在Fighting中有一些特定的内置类似乎可以做这样的事情.

class UITextStyle {
  static const TextStyle body = TextStyle(fontSize: 17);

   addColor(Color color) {
    TextStyle style = this as TextStyle;
    style.merge(TextStyle(color: color));
  }
}

然后可以这样调用它:

UITextStyle.body.addColor(Color.fromRGBA(0,0,0,1));

然而,我不能这样调用该方法,因为首先它不是静态的,其次,如果它是静态的,我将无法在首先声明.body之后调用它,并且只能在UITextStyle.addColor(...)处调用它.

这是如何实现的?

推荐答案

您可以try 这种解决方案,关键是addColor函数没有定义到TextStyle类型,因此需要通过以下扩展将该函数添加到TextStyle类中:

extension TextStyleEx on TextStyle{

  TextStyle addColor(Color color) {
    return merge(TextStyle(color: color,fontWeight: FontWeight.w600));
  }

}

并使此方法返回TextStyle,这样您就可以从合并后的对象中获取实例,因为您的静态对象是最终对象,所以您不能在其上接收新值.

  • 然后就这样离开你的班级

      class UITextStyle {
        static const TextStyle body = TextStyle(fontSize: 17);
      }
    
  • 使用此类和保存的静态对象来获取具有旧文本样式和新文本样式的新TextStyle.

  • 对于在Main中的测试运行,将清除前面的示例:

    TextStyle mergedStyles = UITextStyl.body.addColor(Colors.black);
    print(mergedStyles);
    

Flutter相关问答推荐

Cupertino Buttino SheetAction on按下可触发加载指示器,然后勾选并延迟

如何将图像从顶部和底部半向外设置为飘动

关闭视频通话,相机仍在运行!(Flutter WebRTC)

Flutter 对齐:不适用于多行文字

CLI数据库连接后将SHA-1密钥添加到Firebase项目

出现异常.RangeError(RangeError(index):无效值:有效值范围为空:0).分度误差

如何从DART中的事件列表中获取即将到来的日期

参数类型';List<;Dynamic&>不能分配给参数类型';List<;SingleChildWidget&>';

谷歌 map 在 flutter 应用程序中显示错误的当前位置

如何将 Flutter 项目迁移到具有多个插件的 Gradle 8?

我无法找到修复此错误的位置,指出无法使用静态访问来访问实例成员

添加appBar时绘制的线条发生偏移 Flu

Flutter应用无法上传到Microsoft Store

如何在 Flutter 中测试动画图标

在 Flutter 中读取 Firebase 数据库数据时遇到问题

如何在向下滚动时隐藏顶部卡片并在向上滚动时出现?

Firebase Cloud Messaging (Flutter):订阅主题时出现错误消息

Flutter NavigationBar 忽略我的背景 colored颜色

在 Flutter 应用程序中全局使用 assets 文件夹

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测