0

我正在使用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))
              ],
            ),
          ),
        ],
      ),
    );
  }
}

4

0 回答 0