如何在 flutter 中保存本地化
How do I save the localization in flutter
我是 Flutter 的初学者,正在制作一个应用程序,我实现了本地化,但是当我退出并重新进入该应用程序时,它只是返回到默认语言。
如何保存所选语言以在我重新启动应用程序时显示?
这是语言列表所在的语言更改页面。
class LanguageSelector extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: ListView(
children: [
Padding(
padding: EdgeInsets.all(4.0.wp),
child: Row(
children: [
IconButton(
onPressed: () {
Get.back();
},
icon: const Icon(Icons.arrow_back),
)
],
),
),
Padding(
padding: EdgeInsets.all(4.0),
child: ListTile(
title: Text(
'English',
style: TextStyle(fontSize: 12.0.sp),
),
onTap: () {
var locale = Locale('en', 'US');
Get.updateLocale(locale);
},
),
),
Padding(
padding: EdgeInsets.all(4.0),
child: ListTile(
title: Text(
'Croatian',
style: TextStyle(fontSize: 12.0.sp),
),
onTap: () {
var locale = Locale('hr', 'HR');
Get.updateLocale(locale);
},
),
),
],
),
),
);
}
}
这在 main.dart 文件中。
void main() async {
await GetStorage.init();
await Get.putAsync(() => StorageService().init());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
translations: LocalString(),
locale: Locale('en', 'US'),
title: 'Todo List',
theme: Themes().lightTheme,
darkTheme: Themes().darkTheme,
themeMode: ThemeService().getThemeMode(),
home: const HomePage(),
debugShowCheckedModeBanner: false,
initialBinding: HomeBinding(),
builder: EasyLoading.init(),
);
}
}
一种方法是将所需数据保存在 shared_preferences 中。因此,每次您加载应用程序时,我们都可以检索存储在手机中的数据,并使用它来决定应用程序的初始状态。
使用示例代码:
final prefs = await SharedPreferences.getInstance();
final String? language = prefs.getString('lang');
if(language == null){
prefs.setString('lang', 'eng');
language = 'eng';
}
我是 Flutter 的初学者,正在制作一个应用程序,我实现了本地化,但是当我退出并重新进入该应用程序时,它只是返回到默认语言。 如何保存所选语言以在我重新启动应用程序时显示? 这是语言列表所在的语言更改页面。
class LanguageSelector extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: ListView(
children: [
Padding(
padding: EdgeInsets.all(4.0.wp),
child: Row(
children: [
IconButton(
onPressed: () {
Get.back();
},
icon: const Icon(Icons.arrow_back),
)
],
),
),
Padding(
padding: EdgeInsets.all(4.0),
child: ListTile(
title: Text(
'English',
style: TextStyle(fontSize: 12.0.sp),
),
onTap: () {
var locale = Locale('en', 'US');
Get.updateLocale(locale);
},
),
),
Padding(
padding: EdgeInsets.all(4.0),
child: ListTile(
title: Text(
'Croatian',
style: TextStyle(fontSize: 12.0.sp),
),
onTap: () {
var locale = Locale('hr', 'HR');
Get.updateLocale(locale);
},
),
),
],
),
),
);
}
}
这在 main.dart 文件中。
void main() async {
await GetStorage.init();
await Get.putAsync(() => StorageService().init());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
translations: LocalString(),
locale: Locale('en', 'US'),
title: 'Todo List',
theme: Themes().lightTheme,
darkTheme: Themes().darkTheme,
themeMode: ThemeService().getThemeMode(),
home: const HomePage(),
debugShowCheckedModeBanner: false,
initialBinding: HomeBinding(),
builder: EasyLoading.init(),
);
}
}
一种方法是将所需数据保存在 shared_preferences 中。因此,每次您加载应用程序时,我们都可以检索存储在手机中的数据,并使用它来决定应用程序的初始状态。
使用示例代码:
final prefs = await SharedPreferences.getInstance();
final String? language = prefs.getString('lang');
if(language == null){
prefs.setString('lang', 'eng');
language = 'eng';
}