所以我是Dart和Flutter的新手,我试图根据像这样的switch语句传入的特定字符串值来设置材质的颜色
class AnswerButton extends StatelessWidget{
final String _option;
final String _answer;
final VoidCallback _onTap;
final Color _color = null;
set _color(_option){
switch (_option){
case "A":
_color = Colors.greenAccent;
break;
case 'B':
_color = Colors.redAccent;
break;
case 'C':
_color = Colors.blueAccent;
break;
case 'D':
_color = Colors.yellowAccent;
break;
}
}
AnswerButton(this._option, this._answer, this._onTap);
@override
Widget build(BuildContext context){
return new Expanded(
child: new Material(
color: _color,
child: new InkWell(
onTap: () => _onTap(),
child: new Center(
child: new Container(
decoration: new BoxDecoration(
border: new Border.all(color: Colors.white, width: 5.0)
),
padding: new EdgeInsets.all(20.0),
child: new Text(_answer.toString(),
style: new TextStyle(color: Colors.white, fontSize: 40.0, fontStyle: FontStyle.italic),),
),
),
),
)
);
}
}
)
但是我遇到了麻烦,因为我不确定如何调用setter方法更新_colour并且材质仍然是白色
答案 0 :(得分:0)
首先,您需要修正一个小的错字。您正在尝试根据official dart documentation来set
的值color
而不是最终变量_color
:< / p>
set color(_option){
}
收件人:
set _color(_option){
}
另一件事是,除非定义了子项,否则Material
小部件color
将不会显示,使用时您会注意到它:
new Material(
color: _color,
child: Text(''), // or any other widget you want to implement
)