flutter - 重置 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);
}
解决方案
您可以尝试:
- 创建一个自定义 StatefulWidget 包含 WheelChooser 和你的算法来重置它
- 在您的算法中,将您的 pushAndRemoveUntil 替换为 setState() 以仅重建此小部件