创建项目后导包:
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"),),
);
}
}