美文网首页
flutter 国际化

flutter 国际化

作者: 代瑶 | 来源:发表于2021-03-08 09:42 被阅读0次

https://flutterchina.club/tutorials/internationalization/
这个是中文flutter官网上的使用方法, 但是我并没用这种,自创了一种简单方法,记录下

创建一个region文件夹

lib文件夹下新建region文件夹.png
  1. chinese是中国文字
  2. english是国外的字

这里我们以中国市场为主, 当没有发现对应的english补充key时就用中文

  • region.dart文件
import 'package:qgh/region/chinese/R.dart';
import 'package:qgh/region/english/R.dart';

class Region {
  static const ZH = "zh";
  static const EN = "en";

  static Region _instance;

  static Region get instance => _getInstance();

  static RChinese get R => _defR;
  static RChinese _defR;

  static Region _getInstance() {
    if (_instance == null) {
      _instance = Region._();
    }
    return _instance;
  }

  Region._() {
    ///init
  }

  factory Region() => _getInstance();

  static void initRegion(String local) {
    if (local == ZH) {
      Region._defR = RChinese();
    } else if (local == EN) {
      Region._defR = REnglish();
    } else {
      Region._defR = RChinese();
    }
  }
}

  • chinese/R 文件
class RChinese {
  final String homeBarTitle = "首页";
}
  • english/R 文件
import 'package:qgh/region/chinese/R.dart';

class REnglish extends RChinese { //这里是继承自中文字体,如果英文没有对应key,则用中文
  final homeBarTitle = "Home";
}
  • main文件
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    Region.initRegion(Region.ZH); //在程序初始化时,读取当前是中国还是外国

    return MaterialApp(
      title: Region.R.homeBarTitle, 
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: Region.R.homeBarTitle), //获取文字都这样来写
    );
  }
}

相关文章

网友评论

      本文标题:flutter 国际化

      本文链接:https://www.haomeiwen.com/subject/fvfpqltx.html