【问题标题】:How can I show greetings like Good Moring, afternoon or evening base on users time in flutter如何根据用户的抖动时间显示早安、下午或晚上等问候语
【发布时间】:2019-07-19 21:21:53
【问题描述】:

我想在用户访问我的应用时打招呼

我尝试过使用 TimeOfDay,但它不起作用。

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

【问题讨论】:

    标签: date flutter dart time


    【解决方案1】:

    尝试使用DateTime.now(),例如:

    String greeting() {
      var hour = DateTime.now().hour;
      if (hour < 12) {
        return 'Morning';
      }
      if (hour < 17) {
        return 'Afternoon';
      }
      return 'Evening';
    }
    

    【讨论】:

    • 反应很好。非常感谢。
    • 最好和最简单的答案。谢谢
    【解决方案2】:

    获取当前时间并对其进行解析并仅获取小时数。

    var timeNow = DateTime.now().hour;
    

    现在,我们的 timeNow 变量具有整数格式的小时值,我们只需要像这样检查条件并根据时间更改消息

    String greetingMessage(){
    
      var timeNow = DateTime.now().hour;
      
      if (timeNow <= 12) {
        return 'Good Morning';
      } else if ((timeNow > 12) && (timeNow <= 16)) {
      return 'Good Afternoon';
      } else if ((timeNow > 16) && (timeNow < 20)) {
      return 'Good Evening';
      } else {
      return 'Good Night';
      }
    }
    

    并用作

    String greetingMes = greetingMessage();
    

    【讨论】:

      【解决方案3】:
      TimeOfDay.now().period; 
      // This will return DayPeriod.am or DayPeriod.pm, you can show the greeting message accordingly
      

      链接: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');
        }
      }
      

      【讨论】:

      • 这很好,但我会使用枚举本身的开关 day.period,而不是字符串。
      • @MJ12358 是的,你是对的! “toString()”在这里是不必要的。我改了!
      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多