Flutter扩展CupertinoThemeData添加自定义颜色后无法正常调用怎么解决
问题原因
你当前在Testy类中定义的bgws是实例成员属性,必须先实例化Testy类才能调用,无法直接通过类名访问。
解决方案
根据你的使用场景可以选以下任意一种:
方案1:改为静态常量,匹配你原本的调用预期
直接修改你的自定义主题类代码,给属性加static const修饰:import 'package:flutter/cupertino.dart'; class Testy extends CupertinoThemeData { static const Color bgws = Color.fromRGBO(120, 120, 120, 1); // 其余自定义颜色也可按相同规则添加 }修改后就可以直接通过
Testy.bgws调用颜色。方案2:保留实例属性设计,先实例化再调用
不需要修改原类代码,调用时先创建类实例:// 调用处先实例化自定义主题类 final Testy customTheme = Testy(); // 通过实例访问属性 Color targetColor = customTheme.bgws;方案3:融入Flutter主题体系全局调用
如果你需要全局使用这套自定义主题,可按以下步骤配置:- 在
main.dart的CupertinoApp中绑定自定义主题
CupertinoApp( theme: Testy(), // 其余App配置 )- 在页面Widget中通过上下文获取主题实例
final Testy customTheme = CupertinoTheme.of(context) as Testy; Color targetColor = customTheme.bgws;- 在
内容的提问来源于stack exchange,提问作者Walrus
相关产品推荐
相关产品推荐

