Flutter json_dynamic_widget(6.0.5+1)主题值调用方法咨询
Flutter json_dynamic_widget(6.0.5+1)正确引用主题primaryColor的方式
你之前的写法失败主要有两个核心问题:主题颜色的定义格式错误,以及变量引用的细节没到位。正确的实现方式如下:
1. 修正主题中颜色的定义格式
在theme组件的data里,不能直接用字符串"#FF0000"定义颜色,需要使用json_dynamic_widget的color组件格式来描述Color对象。
2. 使用正确的变量引用语法
子组件中引用主题变量时,必须用${theme.<变量名>}的格式,其中theme是小写前缀,变量名要和主题data中的key完全匹配。
最终可运行的测试代码
{ "type": "theme", "args": { "data": { "primaryColor": { "type": "color", "args": { "value": "#FF0000" } } } }, "child": { "type": "text", "args": { "text": "Delete", "style": { "color": "${theme.primaryColor}" } } } }
你之前写法的问题分析
"theme.primaryColor"/"primaryColor":缺少插值语法${}包裹,会被当作普通字符串,不会触发主题变量解析"Theme.primaryColor"/"{Theme.primaryColor}":前缀大小写错误,主题变量的上下文标识是小写的theme,且{}单独包裹的方式不生效- 直接用字符串
"#FF0000"定义主题颜色:主题中存储的是字符串类型,而text组件的style.color需要Color对象,类型不匹配导致无法渲染
内容的提问来源于stack exchange,提问作者Franklin Lee
相关产品推荐
相关产品推荐

