Search code examples
flutterbuttontimeclick

How to display time on buttons in Flutter


Requirement: I have 2 buttons, I want when I click on button 1 its text should be replaced by the current time, and the same for button 2.

Problem: The problem is when I click on button 1 its text change to the current time, but when I click on button 2 after a few minutes its text changes to the same time that button 1 has.

Here is my code:

 
  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;
                         
                        });

          })
          

please help to fix it. thanks


Solution

  • You call _getTime() only in initState. Time is stored on initialization and never updated after that. Since it's never updated it's showing the same time constantly.

    To fix that add a _getTime() call to both of your onPressed functions like this:

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