同一个函数在库比蒂诺选择器中做了两件不同的事情

问题描述

我正在尝试更新一个名为 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

我希望我的问题得到澄清。我将添加一个屏幕截图,以便您可以在我“输入”值后看到它的样子。

Picker

Show

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...