如何在 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';
}