【问题标题】:how to display time on buttons in fluuter如何在颤动的按钮上显示时间
【发布时间】:2021-06-06 13:46:21
【问题描述】:

要求: 我有 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;
                         
                        });

          })
          

请帮忙解决。谢谢

【问题讨论】:

  • 你在哪里调用_getTime函数?以及如何存储timeInTexttimeoutTextgetTime 变量?
  • 我在这里调用 _getTime() , void initState() {_getTime() } 和 timeInText 和 timeoutText 是用“时间进入”和“超时”初始化的变量
  • 让我编辑代码
  • @kforjan 请立即查看。

标签: flutter button time click


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    当按钮单击时,您会得到时间一。我认为您也必须在 setState 中编写方法代码。并获取当前时间?我希望它会有所帮助

    【讨论】:

    • 我该怎么做?你能写一些你想说的代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2022-01-10
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多