如何解决同一个函数在库比蒂诺选择器中做了两件不同的事情
我正在尝试更新一个名为 time 的参数,因此我获取了时间,将其拆分为分钟和秒,并将这两个参数中的每一个传递给 Cupertinopicker,在那里我以我想要的方式操作它们。我遇到的问题是它适用于秒部分,但不适用于分钟部分,它只是不断添加值而不重置它们。 默认时间为 1:30 分钟(90 秒),
我会在下面粘贴我的代码。
在下面,我将向您展示打印件以进一步阐明我的问题。
Container IntervallPicker(int time){
int newTime;
Duration _time = Duration(seconds: time);
int minutes = _time.inMinutes;
int seconds = _time.inSeconds;
return Container(
child: Row(
children: [
Container(
width: context.dynamicWidth(0.12),height: context.dynamicHeight(0.1),child: Cupertinopicker(
looping: true,itemExtent: 30,scrollController: FixedExtentScrollController(initialItem: minutes),onselecteditemchanged: (int index){
setState(() {
print("MINUTES BEFORE: $minutes");
minutes = index;
print("MINUTES AFTER: $minutes");
newTime = ((minutes*60) + seconds);
print("NEWTIME AFTER MIN: $newTime");
widget.pause.time = newTime;
});
},children: new List<Widget>.generate(60,(index){
return Text("$index".padLeft(2,'0'));
}),),Text(":"),Container(
width: context.dynamicWidth(0.12),scrollController: FixedExtentScrollController(initialItem: seconds),onselecteditemchanged: (int index){
setState(() {
seconds = index;
newTime = ((minutes*60) + seconds);
print(seconds);
print("NEWTIME AFTER SEC: $newTime");
widget.pause.time = newTime;
});
},],);
}
这是当我更改 SecondsPicker 部分时打印的内容。就像我说的,这部分按预期工作。
>I/Flutter (19497): 29
>I/Flutter (19497): NEWTIME AFTER SEC: 89
>I/Flutter (19497): 28
>I/Flutter (19497): NEWTIME AFTER SEC: 88
>I/Flutter (19497): 29
>I/Flutter (19497): NEWTIME AFTER SEC: 89
>I/Flutter (19497): 30
>I/Flutter (19497): NEWTIME AFTER SEC: 90
现在,当我更改 MinutePicker 部分时会发生什么。正如您所看到的,它不会重置该值,而是继续添加它,即使它清楚地获得了我试图传递给它的值。它只是不断地把它们加起来。例如:第一个 NEWTIME AFTER MIN:
应该是 150
因为 (2*60) + 30
,但不知何故,它从前一轮中取出 1 并添加到它。而且我越是改变价值,它只会变得越来越糟。如果我取一个较小的值,它仍然会增加它。我只是不明白,伙计。 :D
>I/Flutter (19497): MINUTES BEFORE: 1
>I/Flutter (19497): MINUTES AFTER: 2
>I/Flutter (19497): NEWTIME AFTER MIN: 210
>I/Flutter (19497): MINUTES BEFORE: 3
>I/Flutter (19497): MINUTES AFTER: 3
>I/Flutter (19497): NEWTIME AFTER MIN: 390
>I/Flutter (19497): MINUTES BEFORE: 6
>I/Flutter (19497): MINUTES AFTER: 4
>I/Flutter (19497): NEWTIME AFTER MIN: 630
我希望我的问题得到澄清。我将添加一个屏幕截图,以便您可以在我“输入”值后看到它的样子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。