FlutterARB本地化抛出“getterwascalledonnull”错误

按照官方国际化教程的提示,我The getter was called on null在尝试使用从 ARB 文件自动生成的翻译引擎 ( AppLocalizations.of(context).helloWrold) 时得到了:

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class Login extends StatelessWidget {
  final loginAction;
  final String loginError;

  const Login(this.loginAction, this.loginError);

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            loginAction();
          },
          child: Text(AppLocalizations.of(context).helloWorld),
        ),
        Text(loginError ?? ''),
      ],
    );
  }
}

回答

这个问题的解决方法是官方教程中缺失的部分。那里没有描述为了让引擎运行,需要在main.dart文件中声明额外的委托。这可以从示例 GitHub 存储库中得出结论。要解决此问题,请转到MaterialApp并添加缺少的委托AppLocalizations.delegate

import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';


      child: MaterialApp(
          localizationsDelegates: [
            // ... app-specific localization delegate[s] here
            AppLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('en', ''),
            const Locale('pl', '')
          ],
          home: Scaffold(


以上是FlutterARB本地化抛出“getterwascalledonnull”错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>