Flutter MaterialApp窗口小部件参数中的本地化

时间:2018-06-20 23:56:13

标签: localization flutter

按照12的教程进行操作,我正在尝试为Flutter应用设置本地化。效果很好,我可以使用I18n.of(context).trans(<key>)来访问小部件中的翻译字符串。

但是我不知道如何在MaterialApp顶部小部件中访问翻译:

import 'package:flutter/material.dart';
import 'package:flutter_app/i18n/i18n.dart';
import 'package:flutter_app/views/menu.dart';
import 'package:flutter\_localizations/flutter\_localizations.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      supportedLocales: [
        const Locale('en', 'US'),
        const Locale('de', 'DE'),
      ],
      localizationsDelegates: [
        const I18nDelegate(),
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate
      ],

      title: I18n.of(context).trans('title'), //FIXME doesn't work
      home: new Menu(),

    );
  }
}

对于上面的代码,我得到一个异常,因为I18n.of(context)返回null。我想念什么?

1 个答案:

答案 0 :(得分:1)

您应该使用onGenerateTitle而不是title字段:

MaterialApp(
   ...
   onGenerateTitle: (context) => I18n.of(context).trans('title'),
)