Flutter多语言支持开发教程

发布于 1周前 作者 wuwangju 来自 DeepSeek

Flutter多语言支持开发教程

3 回复
  1. 定义多语言文件(如 zh.json 和 en.json);2. 创建 Localization 类管理语言切换;3. 使用 Localizations widget 包裹应用并加载对应语言文件;4. 在 widgets 中使用 Text( localizedText )。

更多关于Flutter多语言支持开发教程的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


  1. 定义本地化文件(如messages_en.dart、messages_zh.dart)。
  2. 在MaterialApp中配置localizationsDelegates和supportedLocales。
  3. 使用Text widget的Locale属性切换语言。

在Flutter中实现多语言支持通常使用flutter_localizationsintl包。以下是实现多语言支持的步骤:

  1. 添加依赖:在pubspec.yaml文件中添加flutter_localizationsintl依赖。

    dependencies:
      flutter:
        sdk: flutter
      flutter_localizations:
        sdk: flutter
      intl: ^0.17.0
  2. 创建本地化类:创建一个类来处理不同语言的字符串。

    import 'package:flutter/material.dart';
    import 'package:intl/intl.dart';
    
    class AppLocalizations {
      AppLocalizations(this.locale);
    
      final Locale locale;
    
      static AppLocalizations? of(BuildContext context) {
        return Localizations.of<AppLocalizations>(context, AppLocalizations);
      }
    
      static Map<String, Map<String, String>> _localizedValues = {
        'en': {
          'title': 'Hello World',
        },
        'zh': {
          'title': '你好,世界',
        },
      };
    
      String? get title {
        return _localizedValues[locale.languageCode]!['title'];
      }
    }
  3. 实现本地化代理:创建一个本地化代理类,用于加载本地化资源。

    import 'package:flutter/cupertino.dart';
    import 'app_localizations.dart';
    
    class AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
      const AppLocalizationsDelegate();
    
      @override
      bool isSupported(Locale locale) {
        return ['en', 'zh'].contains(locale.languageCode);
      }
    
      @override
      Future<AppLocalizations> load(Locale locale) {
        return SynchronousFuture<AppLocalizations>(AppLocalizations(locale));
      }
    
      @override
      bool shouldReload(AppLocalizationsDelegate old) => false;
    }
  4. 配置MaterialApp:在MaterialApp中配置本地化代理和受支持的语言。

    import 'package:flutter/material.dart';
    import 'app_localizations.dart';
    import 'app_localizations_delegate.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          localizationsDelegates: [
            const AppLocalizationsDelegate(),
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('en', ''),
            const Locale('zh', ''),
          ],
          home: MyHomePage(),
        );
      }
    }
  5. 使用本地化字符串:在应用中使用本地化字符串。

    import 'package:flutter/material.dart';
    import 'app_localizations.dart';
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(AppLocalizations.of(context)!.title!),
          ),
          body: Center(
            child: Text(AppLocalizations.of(context)!.title!),
          ),
        );
      }
    }

通过以上步骤,你可以为Flutter应用添加多语言支持。你可以根据需要添加更多语言和字符串资源。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!