如何在颤动的按钮上显示时间

how to display time on buttons in fluuter

要求: 我有 2 个按钮,我希望当我单击按钮 1 时,其文本应替换为当前时间,按钮 2 也是如此。

问题: 问题是当我点击按钮 1 时,它的文本变为当前时间,但是当我在几分钟后点击按钮 2 时,它的文本变为与按钮 1 相同的时间。

这是我的代码

 
  void initState() {
    // TODO: implement initState
    super.initState();
     _getTime();
     
  }

  void _getTime() {
    final String formattedDateTime =
        DateFormat('kk:mm:ss').format(DateTime.now()).toString();
    setState(() {
      getTime = formattedDateTime;
     print(getTime[0]);
    });
  }

var timeInText="Time in";
  var timeOutText="Time out";
\button 1
RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
          text:timeInText,
          bgcolor: Colors.blue[500],
          press:(){
            setState(() {
                          timeInText=getTime;
                        
                          
                        });

          })

//button 2

RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
          text:timeoutText,
          bgcolor: Colors.blue[500],
          press:(){
            setState(() {
                          timeoutText=getTime;
                         
                        });

          })
          

请帮助修复它。谢谢

你得到了一次,当按钮被点击时。我认为你也必须在 setState 中编写你的方法代码。并获取当前时间,希望对您有所帮助

您只在 initState 中调用 _getTime()。时间在初始化时存储,之后永远不会更新。由于它从未更新,因此一直显示相同的时间。

要解决此问题,请向您的两个 onPressed 函数添加 _getTime() 调用,如下所示:

onPressed: () {
  _getTime();
  setState(() {
    timeoutText = getTime;
  });
}),