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

10

我正在尝试为我的Flutter应用设置本地化,遵循12的教程。这很好用,我可以在小部件中使用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个回答

19

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接