首页 > 解决方案 > 重置 WheelChooser 小部件初始值

问题描述

包: https ://pub.dev/packages/wheel_chooser

问题: 包没有用于重置或重新分配值的键和/或控制器。

问题:如何为 WheelChooser 小部件实现重置按钮?我目前正在将值重新分配为零并导航到动画持续时间为零的页面。我遇到的问题是我还有一个显示电池电量的 FutureBuilder,每次按下重置按钮时都会重建它。有什么方法可以重置此 WheelChooser 小部件的值而无需刷新整个页面?

代码示例:

              WheelChooser.integer(
              initValue: Clock().timerHours ?? 0,
              magnification: 1.7,
              listHeight: 150,
              itemSize: 30,
              squeeze: 0.75,
              listWidth: 100,
              onValueChanged: (hours) {
                setState(() {
                  Clock().timerHours = hours;
                });
                Clock.save();
              },
              maxValue: 23,
              minValue: 00,
              isInfinite: true,
            ),

我的解决方案:刷新页面。IE

// The only way to reset the wheel values to zero is to
// reassign the init values and rebuild the page.
// TODO: Any other way of doing this?
        
if (Clock().timerHours != 0 ||
    Clock().timerMinutes != 0 ||
    Clock().timerSeconds != 0) {
      
      Clock().timerHours = 0;
      Clock().timerMinutes = 0;
      Clock().timerSeconds = 0;

      Navigator.of(context).pushAndRemoveUntil(
          PageRouteBuilder(
            pageBuilder: (_, __, ___) => Home(
              pageIndex: 3,
            ),
            transitionDuration: Duration(seconds: 0),
          ),
          (Route<dynamic> route) => false);
    }

标签: flutterdart

解决方案


您可以尝试:

  • 创建一个自定义 StatefulWidget 包含 WheelChooser 和你的算法来重置它
  • 在您的算法中,将您的 pushAndRemoveUntil 替换为 setState() 以仅重建此小部件

推荐阅读