language.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import 'package:e2ee_chat/l10n/localization_intl.dart';
  2. import 'package:e2ee_chat/presenter/locale.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:provider/provider.dart';
  5. class LanguageRoute extends StatelessWidget {
  6. @override
  7. Widget build(BuildContext context) {
  8. var color = Theme.of(context).primaryColor;
  9. var localeModel = Provider.of<LocaleModel>(context);
  10. //构建语言选择项
  11. Widget _buildLanguageItem(String lan, value) {
  12. return ListTile(
  13. title: Text(
  14. lan,
  15. // 对APP当前语言进行高亮显示
  16. style: TextStyle(color: localeModel.locale == value ? color : null),
  17. ),
  18. trailing:
  19. localeModel.locale == value ? Icon(Icons.done, color: color) : null,
  20. onTap: () {
  21. // 更新locale后MaterialApp会重新build
  22. localeModel.locale = value;
  23. },
  24. );
  25. }
  26. return Scaffold(
  27. appBar: AppBar(
  28. title: Text(GmLocalizations.of(context).language),
  29. ),
  30. body: ListView(
  31. children: <Widget>[
  32. _buildLanguageItem("中文简体", "zh_CN"),
  33. _buildLanguageItem("English", "en_US"),
  34. _buildLanguageItem(GmLocalizations.of(context).auto, null),
  35. ],
  36. ),
  37. );
  38. }
  39. }