Flutter intl国际化的使用

创建项目后导包:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.6
  flutter_localizations:
    sdk: flutter

下载插件(IDEA、Android stuido、VS code都有)“Flutter intl”

接着插件本地初始化:

l10n下只有一个intl_en.arb的文件,代表只有英文翻译,为此我们创建一个具备中文翻译的arb文件,步骤如下:

这样,中文的arb文件也有了(多了一个intl_zh.arb的文件),arb文件可以在一定程度上当成json文件,我们添加一些内容,如下:

一般写入后会插件会自动生成对应代码,接着开始使用:


import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

main(){runApp(MaterialApp(
  localizationsDelegates: const [
    S.delegate,
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
  ],
  supportedLocales: S.delegate.supportedLocales,
  home: H(),));}
class H extends StatefulWidget {
  const H({super.key});
  @override
  State<StatefulWidget> createState()=>_HState();
}
class _HState extends State<H>{
  String flag="en";
  @override
  Widget build(BuildContext context) {
    String str1=S.current.greet;
    return Scaffold(
      appBar: AppBar(title: Text("国际化demo"),),
      body: Text(str1,style: TextStyle(fontSize: 40),),
      floatingActionButton: FloatingActionButton(onPressed: (){
        setState(() {
          S.load(flag=="en"?Locale('zh','CN'):Locale('en','us'));
          flag=="en"?flag="zh":flag="en";
          String str1=S.current.greet;
        });
      },child:Text("T"),),
    );
  }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值