按照1和2的教程进行操作,我正在尝试为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
。我想念什么?
答案 0 :(得分:1)
您应该使用onGenerateTitle
而不是title
字段:
MaterialApp(
...
onGenerateTitle: (context) => I18n.of(context).trans('title'),
)