23

I want to greet user when they visit my app

I have tried using TimeOfDay but it isn't working.

TimeOfDay now = TimeOfDay.now();

  greetings(String greeting){
    var greeting = now;
    if(greeting <= '11: 59'){
      return 'Morning';
    } else if (greeting > '11:59' && <= '16:59'){
      return 'Afternoon';
    } else if (greeting > '16:59' && <= '23:59'){
      return 'Afternoon';
    } else {
      return 'Morning';
    }
  }
Benkot
  • 265
  • 1
  • 2
  • 6

3 Answers3

73

Try using DateTime.now(), for example:

String greeting() {
  var hour = DateTime.now().hour;
  if (hour < 12) {
    return 'Morning';
  }
  if (hour < 17) {
    return 'Afternoon';
  }
  return 'Evening';
}
Richard Heap
  • 48,344
  • 9
  • 130
  • 112
2
TimeOfDay.now().period; 
// This will return DayPeriod.am or DayPeriod.pm, you can show the greeting message accordingly

Link: https://api.flutter.dev/flutter/material/TimeOfDay/period.html

import 'package:flutter/material.dart';

void main(){
  TimeOfDay day = TimeOfDay.now();
  switch(day.period){
    case DayPeriod.am: print('its morning');
      break;
    case DayPeriod.pm: print('its evening/night');
  }
}
ritz
  • 205
  • 2
  • 9
0

You are using TimeOfDay in wrong way. Your code should work if you use it properly.

String greetings(){
  final hour = TimeOfDay.now().hour;

  if(hour <= 12){
    return 'Morning';
  } else if (hour <= 17){
    return 'Afternoon';
  }
  return 'Evening';
}