我正在使用flutter_fortune_wheel:^1.0.1,它正在使用HookWidget。我有一个可变奖品,该奖品印在 2 个不同的部分。在handleRoll()下,它总是被正确打印。但是在onAnimationEnd下,只有第一次它会有一个正确的值。后续的将保留第一个值。我不明白为什么我的变量有不同的值。请帮忙。谢谢!
class FortuneWheelPage extends HookWidget {
@override
Widget build(BuildContext context) {
final alignment = useState(Alignment.topCenter);
final selected = useStreamController<int>();
final selectedIndex = useStream(selected.stream, initialData: 0).data ?? 0;
final isAnimating = useState(false);
String prize = '';
int myInt = 0;
void handleRoll() {
myInt = roll(Constants.fortuneValues.length);
selected.add(
myInt,
);
prize = Constants.fortuneValues[myInt];
print('prize1: $prize');
}
return Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(height: 8),
RollButton(
onPressed: isAnimating.value ? null : handleRoll,
),
Expanded(
child: FortuneWheel(
animateFirst: false,
selected: selected.stream,
onAnimationStart: () {
isAnimating.value = true;
},
onAnimationEnd: () {
print('prize2: $prize');
isAnimating.value = false;
},
indicators: [
FortuneIndicator(
alignment: alignment.value,
child: TriangleIndicator(),
),
],
items: [
for (var it in Constants.fortuneValues)
FortuneItem(child: Text(it))
],
),
),
],
),
);
}
}