Flutter中如何让showDatePicker和showTimePicker显示中文
在Flutter中使用showDatePicker和showTimePicker时,弹出的日期和时间选择器默认显示英文。请问如何让这两个选择器显示中文界面?需要添加哪些依赖或进行哪些配置才能实现本地化?
2 回复
在MaterialApp中设置localizationsDelegates和supportedLocales:
MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('zh', 'CN'),
],
)
并添加依赖:flutter_localizations,在pubspec.yaml中引入。
更多关于Flutter中如何让showDatePicker和showTimePicker显示中文的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中让日期和时间选择器显示中文,需要进行以下配置:
1. 添加依赖
dependencies:
flutter_localizations:
sdk: flutter
intl: any
2. 配置MaterialApp
在main.dart中配置MaterialApp的本地化设置:
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
const Locale('zh', 'CN'), // 中文简体
],
home: MyHomePage(),
);
}
}
3. 使用示例
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('日期时间选择器')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () => _showDatePicker(context),
child: Text('选择日期'),
),
ElevatedButton(
onPressed: () => _showTimePicker(context),
child: Text('选择时间'),
),
],
),
),
);
}
Future<void> _showDatePicker(BuildContext context) async {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2100),
locale: Locale('zh', 'CN'), // 设置中文
);
}
Future<void> _showTimePicker(BuildContext context) async {
final TimeOfDay? picked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (BuildContext context, Widget? child) {
return Localizations.override(
context: context,
locale: Locale('zh', 'CN'),
child: child,
);
},
);
}
}
注意事项
- 确保设备语言设置为中文,或明确指定locale参数
- 对于时间选择器,需要使用Localizations.override来强制使用中文
- 如果仍然显示英文,请检查依赖是否已正确安装并重新运行应用
这样配置后,日期和时间选择器就会显示中文界面了。

