我有一个有状态的小部件LetterButton()
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text(widget.caption),
onPressed: onChanged,
color: colors[currentIndex],
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
);
}
在我的main.dart文件中,我声明了一个LetterButtons数组
List<LetterButton> buttonArray;
我在initState()
期间通过方法初始化并填充
void makeButtons() {
for (var letter in alphabet) {
buttonArray.add(
LetterButton(letter),
);
}
}
然后,列表中的按钮将显示在用户界面中
Wrap(
children: buttonArray,
)
如何更改currentIndex
(在
int
)还是通过main.dart将所有按钮更改为相同颜色?
注意:我几天前问a similar question,但答案有点超出我目前的知识,我在SO上对类似Q的回答也是如此。我对回调有一点了解,并且对提供程序包做了一些试验,但是在线提供了各种各样的答案和信息,我什至不知道自己不知道能够回答我的问题的地方: -)
答案 0 :(得分:0)
创建具有状态作为公共访问权限的有状态小部件,以便您可以在包外部进行访问并为构造函数提供密钥。这样您就可以引用键并获取可以更改值的状态。请参见以下示例
class LetterButton extends StatefulWidget {
LetterButton({GlobalKey key}) : super(key: key);
@override
LetterButtonState createState() => LetterButtonState();
}
class LetterButtonState extends State<LetterButton> {
int value = 0;
//this public method is to update int value
setValue(int value) {
setState(() {
this.value = value;
});
}
@override
Widget build(BuildContext context) {
return Center(
child: Text(value.toString()),
);
}
}
//In Main.dart
GlobalKey<LetterButtonState> _buttonStateKey = GlobalKey();
//while creating widget
LetterButton(key:_buttonStateKey)
//in onTapCallback you can call to update value
_buttonStateKey.currentState?.setValue(10);
答案 1 :(得分:0)
只需按参数将创建的函数发送到新类,并且新类应与Function l配合使用,那么您可以从新类中调用该函数。