我正在做我的第一个真正的颤动项目,我需要创建一个简单的骰子。为了保持代码清晰,我创建了一个dice.dart文件,在其中编写了一个Dice类,其中包含一个number、一个空方法rollDice和一个返回number的getter。
我现在想创建一个有状态的DiceWidget (将返回一个显示骰子数量的RaisedButton ),我可以在不同的页面上实例化它,并从中获取骰子的数量……我必须在我的类骰子上创建一个提供者才能这样做吗?或者有没有其他我不知道的更好的方式,比如只使用有状态的小部件?
感谢您的回答!阿克塞尔。
发布于 2020-04-16 11:29:20
你走上了正确的道路,因为每个页面都创建了一个有状态的小部件,从而产生了许多骰子
发布于 2020-04-16 13:13:09
多亏了你,我想出了一个几乎能做我想做的事情!
class DiceWidget extends StatefulWidget {
final Function onRolled;
DiceWidget(this.onRolled);
@override
_DiceWidgetState createState() => _DiceWidgetState();
}
class _DiceWidgetState extends State<DiceWidget> {
static Dice dice = Dice();
MaterialColor diceColor = dice.getColor;
@override
Widget build(BuildContext context) {
return SizedBox(
height: 150,
width: 150,
child: RaisedButton(
onPressed: () {
for (int i = 0; i < 10; i++) {
dice.rollDice();
setState(() {
diceColor = dice.getColor;
});
sleep(Duration(milliseconds: i * 100));
}
widget.onRolled(diceColor);
},
color: diceColor,
),
);
}
}
我可以实例化一个DiceWidget,并给它一个在滚动之后执行的函数,来处理结果(随机选择的颜色)。
我现在对我正在尝试制作的“动画”有一个问题,我不喜欢我的解决方案(而且它无论如何都不起作用……)有没有一种“更好”的方法来实现这种“滚动效果”?
谢谢你的回答,阿克塞尔。
https://stackoverflow.com/questions/61249012
复制相似问题