You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现按6小时间隔显示早/中/晚问候语的代码求助

Flutter 根据6小时时间间隔显示问候语

以下是两种可直接复用的实现方案:

基础静态版本

适合不需要实时刷新的场景,页面初始化时获取一次时间并显示问候语:

import 'package:flutter/material.dart';

void main() => runApp(const GreetingApp());

class GreetingApp extends StatelessWidget {
  const GreetingApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('问候语演示')),
        body: Center(
          child: Text(
            _getGreetingText(),
            style: const TextStyle(fontSize: 26, fontWeight: FontWeight.w600),
          ),
        ),
      ),
    );
  }

  String _getGreetingText() {
    final currentHour = DateTime.now().hour;
    
    if (currentHour >= 6 && currentHour < 12) return '早上好';
    if (currentHour >= 12 && currentHour < 18) return '下午好';
    if (currentHour >= 18 && currentHour < 24) return '晚上好';
    return '夜深了,早点休息'; // 0-6点区间
  }
}

实时刷新版本

如果需要在时间跨区间时自动更新问候语(比如18点整自动从"下午好"切换到"晚上好"),可以结合定时器实现:

import 'package:flutter/material.dart';
import 'dart:async';

void main() => runApp(const GreetingApp());

class GreetingApp extends StatefulWidget {
  const GreetingApp({super.key});

  @override
  State<GreetingApp> createState() => _GreetingAppState();
}

class _GreetingAppState extends State<GreetingApp> {
  late Timer _refreshTimer;
  String _currentGreeting = '';

  @override
  void initState() {
    super.initState();
    _updateGreeting();
    // 每分钟刷新一次,确保时间变化时自动更新内容
    _refreshTimer = Timer.periodic(const Duration(minutes: 1), (_) => _updateGreeting());
  }

  void _updateGreeting() {
    setState(() => _currentGreeting = _getGreetingText());
  }

  String _getGreetingText() {
    final currentHour = DateTime.now().hour;
    
    if (currentHour >= 6 && currentHour < 12) return '早上好';
    if (currentHour >= 12 && currentHour < 18) return '下午好';
    if (currentHour >= 18 && currentHour < 24) return '晚上好';
    return '夜深了,早点休息';
  }

  @override
  void dispose() {
    _refreshTimer.cancel(); // 销毁页面时取消定时器,避免内存泄漏
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('实时问候语')),
        body: Center(
          child: Text(
            _currentGreeting,
            style: const TextStyle(fontSize: 26, fontWeight: FontWeight.w600),
          ),
        ),
      ),
    );
  }
}

说明

  • 时间按6小时划分为四个区间:6:00-12:00、12:00-18:00、18:00-24:00、0:00-6:00,你可以根据需求修改区间范围或对应问候语
  • 核心逻辑集中在_getGreetingText()函数中,只需调用该函数就能在任意Text组件中显示对应问候语
  • 基础版本满足大多数静态展示场景;实时版本通过定时器自动更新状态,确保问候语随时间自动切换

内容的提问来源于stack exchange,提问作者KNGGEO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:17:36