Flutter MaterialApp Widget 参数中的本地化

And*_*ohr 8 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(),

    );
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Rém*_*let 11

您应该使用onGenerateTitle代替title字段:

MaterialApp(
   ...
   onGenerateTitle: (context) => I18n.of(context).trans('title'),
)
Run Code Online (Sandbox Code Playgroud)