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('选择日期'),
            ),
          ],
        ),
      ),
    );
  }
}
相关推荐
kyriewen7 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW8 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
用户852495071848 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo8 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒10 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn11 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
东风破_11 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript
巴勒个啦11 小时前
D3.js 入门实战:用力导向图可视化项目依赖关系
javascript
不好听61312 小时前
JavaScript 的 this 到底指向谁?
javascript·面试
触底反弹12 小时前
🔥 2026 年爆火的 Harness Engineering 到底是什么?从原理到实战一文讲透
javascript·人工智能·程序员