flutter如何设置locale国际化
在Flutter中如何正确设置Locale来实现应用的国际化?我尝试使用MaterialApp的locale属性,但切换语言时界面没有实时更新。请问除了设置locale,还需要配置哪些内容?如何实现动态语言切换并保证界面即时刷新?
2 回复
在Flutter中设置Locale国际化,需在MaterialApp中配置supportedLocales和localizationsDelegates。例如:
MaterialApp(
supportedLocales: [
Locale('zh', 'CN'),
Locale('en', 'US'),
],
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
)
同时使用intl包管理翻译文件。
更多关于flutter如何设置locale国际化的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中设置Locale国际化主要通过以下步骤实现:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
2. 创建本地化资源
在项目根目录创建 l10n 文件夹,添加 app_localizations.dart:
import 'package:flutter/material.dart';
class AppLocalizations {
static final Map<String, Map<String, String>> _localizedValues = {
'en': {
'title': 'Hello World',
'login': 'Login',
},
'zh': {
'title': '你好世界',
'login': '登录',
},
};
final Locale locale;
AppLocalizations(this.locale);
static AppLocalizations of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
}
String get title {
return _localizedValues[locale.languageCode]!['title']!;
}
String get login {
return _localizedValues[locale.languageCode]!['login']!;
}
}
3. 配置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: [
Locale('en', 'US'), // 英语
Locale('zh', 'CN'), // 中文
],
locale: Locale('zh', 'CN'), // 设置默认语言
home: MyHomePage(),
);
}
}
4. 使用本地化文本
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context).title),
),
body: Center(
child: Text(AppLocalizations.of(context).login),
),
);
}
}
5. 动态切换语言
// 在需要切换语言的地方
Locale newLocale = Locale('en', 'US');
// 重启应用或使用状态管理更新
这样就完成了Flutter的国际化设置。可以根据需要添加更多语言支持。

