flutter日期选择国际化支持

支持中文的日期选择,来自AI生成。亲测好用。

pubspec.yaml

yaml 复制代码
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations: # 添加这个
    sdk: flutter # 添加这个
  intl: ^0.20.2 # 添加这个

main.dart

dart 复制代码
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; // 导入本地化包

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // 国际化配置
      localizationsDelegates: const [
        // 提供 Material 组件的本地化字符串(如按钮、对话框等)
        GlobalMaterialLocalizations.delegate,
        // 提供 Cupertino 风格组件的本地化字符串
        GlobalCupertinoLocalizations.delegate,
        // 提供通用的文本方向本地化
        GlobalWidgetsLocalizations.delegate,
      ],
      // 声明应用支持的语言
      supportedLocales: const [
        Locale('en', ''), // English
        Locale('zh', 'CN'), // Chinese
      ],
      title: 'Flutter 日期选择器',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  DateTime _selectedDate = DateTime.now();

  Future<void> _selectDate(BuildContext context) async {
    final DateTime? picked = await showDatePicker(
      context: context,
      initialDate: _selectedDate,
      firstDate: DateTime(2000),
      lastDate: DateTime(2101),
    );
    if (picked != null && picked != _selectedDate) {
      setState(() {
        _selectedDate = picked;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('中文日期选择器示例'),
      ),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Text(
              "您选择的日期是: ${_selectedDate.year}年${_selectedDate.month}月${_selectedDate.day}日",
              style: const TextStyle(fontSize: 18),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _selectDate(context),
              child: const Text('选择日期'),
            ),
          ],
        ),
      ),
    );
  }
}
相关推荐
明月_清风19 小时前
性能级目录同步:IntersectionObserver 实战
前端·javascript
明月_清风19 小时前
告别暴力轮询:深度解锁浏览器“观察者家族”
前端·javascript
摸鱼的春哥19 小时前
Agent教程17:LangChain的持久化和人工干预
前端·javascript·后端
子兮曰1 天前
async/await高级模式:async迭代器、错误边界与并发控制
前端·javascript·github
恋猫de小郭1 天前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
柳杉1 天前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau1 天前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生1 天前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
明君879971 天前
Flutter 如何给图片添加多行文字水印
前端·flutter
进击的尘埃1 天前
AI 代码审查工具链搭建:用 AST 解析 + LLM 实现自动化 Code Review 的前端工程方案
javascript