首页 > 其他分享 >Flutter项目国际化(本地化,全球化,多语言)

Flutter项目国际化(本地化,全球化,多语言)

时间:2023-01-26 15:00:14浏览次数:65  
标签:const title 本地化 flutter delegate key 全球化 dart Flutter

目标

在Flutter项目中实现国际化,支持多种语言。

开发工具

下载IntelliJ IDEA

安装插件:Flutter Intl

安装完成后重启IDE。

使用Intl对项目进行初始化

添加语言

添加内容

修改pubspec.yaml

dependencies:
  flutter:
    sdk: flutter

修改为:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

调用

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      supportedLocales: S.delegate.supportedLocales,
      localizationsDelegates: const [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
        S.delegate
      ],
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              S.of(context).app_name,
            ),
          ],
        ),
      ),
    );
  }
}

关键代码:

import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';
S.of(context).app_name

完整代码参考样例

https://gitee.com/lblbc/notepad-multi-lang

关于

厦门大学计算机专业|华为八年高级工程师
专注《零基础学编程系列》 http://lblbc.cn/blog
包含:Java | 安卓 | 前端 | Flutter | iOS | 小程序 | 鸿蒙
公众号:蓝不蓝编程

标签:const,title,本地化,flutter,delegate,key,全球化,dart,Flutter
From: https://blog.51cto.com/hspbc/6023570

相关文章

  • Flutter 这一年:2022 亮点时刻
    回看2022,展望FlutterForward2022年,我们非常兴奋的看到Flutter社区持续发展壮大,也因此让更多人体验到了令人难以置信的体验。每天有超过1000款使用Flutter的新......
  • 大年初四,Flutter Forward 中国社区直播活动与你不见不散
    之前我们预告过,2023年1月25日(年初四),Flutter团队将在肯尼亚首都内罗毕举办FlutterForward大会,并同时开启线上直播。本次活动将为展示最新的Flutter技术更新,......
  • flutter 效果实现 —— 构建镂空区域
    效果:待补充代码:classHomePageextendsStatelessWidget{constHomePage({Key?key}):super(key:key);@overrideWidgetbuild(BuildContextcontext){......
  • Flutter帧率监控 | 由浅入深,详解获取帧率的那些事
    前言做线上帧率监控上报时,少不了需要弄明白如何通过代码获取实时帧率的需求,这篇文章通过图解配合Flutter性能调试工具的方式一步步通俗易懂地让你明白获取帧率的基础知识,以......
  • Flutter帧率监控 | 由浅入深,详解获取帧率的那些事
    前言做线上帧率监控上报时,少不了需要弄明白如何通过代码获取实时帧率的需求,这篇文章通过图解配合Flutter性能调试工具的方式一步步通俗易懂地让你明白获取帧率的基础知识,......
  • flutter 效果实现 —— 下拉滑动面板
    效果:代码:classHomePageextendsStatefulWidget{constHomePage({Key?key}):super(key:key);finaldoublemaxHeight=200;finaldoubleminHeight=......
  • Flutter异常监控 - 伍 | 关于异常监控框架设计的思考
    前言最近阅读Catcher、BugSnag、Rollbar三个Flutter异常监控开源框架,文章链接如下:Flutter异常监控-壹|从Zone说起Flutter异常监控-贰|框架Catcher原......
  • flutter常用包简介
    flutter常用包简介url_launcher:链接到外部的浏览器dio:类似于对httpClient请求的封装ffi:有dart:ffi,也有package:ffi,两者不同,用来加载dll文件win32:封装了常用......
  • flutter 基础 —— 事件监听
    事件机制:命中测试的过程是从上层组件到下层组件,但是加入HitTestResult的顺序是从下到上,分发事件的顺序同加入顺序。通常,若用户点击坐标不在当前节点的size范围内,则......
  • Flutter异常监控 - 肆 | Rollbar源码赏析
    一.Rollbar可以帮你解决哪些问题无特别说明,文中Rollbar统指Rollbar-flutter1.代码复用Rollbar官方文档说是纯Dart实现,该特征意味着自带”代码复用”光环。如图当接......