import 'package:flutter/material.dart';
import 'package:loca/language_tool.dart';
import 'package:loca/shared_preferences_manager.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';
void main() async{
WidgetsFlutterBinding.ensureInitialized();
final c = await SharedPreferencesManager().getLanguage();
LanguageTool.currentSettingLanguage = c;
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
locale: LanguageTool.supportedLocales[LanguageTool.currentSettingLanguage] ,
supportedLocales: LanguageTool.supportedLocales.values,
localizationsDelegates: const [
GlobalCupertinoLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
S.delegate,
],
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
onTap: (){
SharedPreferencesManager().setLanguage("");
SharedPreferencesManager().getLanguage().then((value){
LanguageTool.currentSettingLanguage = value;
runApp(const MyApp());
});
},
child: const Text(
"跟随系统",
style: TextStyle(fontSize: 18),
),
),
const SizedBox(height: 20,),
GestureDetector(
onTap: (){
SharedPreferencesManager().setLanguage("简体中文");
SharedPreferencesManager().getLanguage().then((value){
LanguageTool.currentSettingLanguage = value;
runApp(const MyApp());
});
},
child: const Text(
"切换成中文",
style: TextStyle(fontSize: 18),
),
),
const SizedBox(height: 20,),
GestureDetector(
onTap: (){
SharedPreferencesManager().setLanguage("English");
SharedPreferencesManager().getLanguage().then((value){
LanguageTool.currentSettingLanguage = value;
runApp(const MyApp());
});
},
child: const Text(
"切换成英文",
style: TextStyle(fontSize: 18),
),
),
const SizedBox(height: 20,),
GestureDetector(
onTap: (){
SharedPreferencesManager().setLanguage("日本語");
SharedPreferencesManager().getLanguage().then((value){
LanguageTool.currentSettingLanguage = value;
runApp(const MyApp());
});
},
child: const Text(
"切换成日文",
style: TextStyle(fontSize: 18),
),
),
const SizedBox(height: 50,),
Text(
S.current.app_name,
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Flutter 国际化demo
共13个文件
dart:8个
arb:3个
yaml:1个
需积分: 5 2 下载量 168 浏览量
2024-02-14
17:04:42
上传
评论
收藏 11KB ZIP 举报
温馨提示
该Demo 手把手教你实现flutter 国际化,语言切换,demo包括,中文,日文,英文和系统默认语言设置切换,加速你的开发!
资源推荐
资源详情
资源评论
收起资源包目录
loca.zip (13个子文件)
lib
.DS_Store 6KB
language_tool.dart 403B
main.dart 4KB
generated
l10n.dart 2KB
intl
messages_all.dart 2KB
messages_ja.dart 1KB
messages_en.dart 1KB
messages_zh.dart 1KB
shared_preferences_manager.dart 626B
l10n
intl_ja.arb 52B
intl_en.arb 45B
intl_zh.arb 46B
pubspec.yaml 4KB
共 13 条
- 1
资源评论
Space2018
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功