【Flutter】Flutter实现国际化多语言支持方案分享
warning:
这篇文章距离上次修改已过182天,其中的内容可能已经有所变动。
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n.dart';
// 使用Flutter国际化文件
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
// 使用自定义的LocalizationsDelegate来获取国际化资源
localizationsDelegates: [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en', 'US'), // 英文
const Locale('es', 'ES'), // 西班牙语
// 添加更多的语言支持
],
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 获取当前语言环境下的本地化字符串
final welcomeText = AppLocalizations.of(context)!.welcomeText;
return Scaffold(
appBar: AppBar(
title: Text(welcomeText),
),
body: Center(
child: Text(welcomeText),
),
);
}
}
这个代码示例展示了如何在Flutter应用中使用flutter_gen/gen_l10n.dart
库来实现国际化。我们定义了一个MyApp
类,它继承自StatelessWidget
并使用MaterialApp
来设置应用的根部件。在localizationsDelegates
属性中,我们添加了必要的代理来处理不同语言的本地化资源。supportedLocales
属性定义了应用支持的语言环境。在MyHomePage
部件中,我们通过AppLocalizations.of(context)!
获取当前语言环境下的本地化字符串,并在AppBar
的title
和页面中心显示这些字符串。
评论已关闭