我正在尝试更新一个名为 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),
height: context.dynamicHeight(0.1),
child: CupertinoPicker(
looping: true,
itemExtent: 30,
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;
});
},
children: new List<Widget>.generate(60, (index){
return Text("$index".padLeft(2,'0'));
}),
),
),
],
),
);
}
当我更改 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
我希望我的问题得到澄清。我将添加一个屏幕截图,这样您就可以在我“输入”值后看到它的样子。