如何在flutter中测试本地化的小部件?

svi*_*i3c 9 flutter

我按照flutter docs中的建议将l10n添加到我的flutter应用程序中,建议使用如下静态方法获取本地化:

static DemoLocalizations of(BuildContext context) {
  return Localizations.of<DemoLocalizations>(context, DemoLocalizations);
}
Run Code Online (Sandbox Code Playgroud)

这在运行应用程序时工作正常,但是当我尝试测试我的小部件时,返回的值始终为空。

有没有什么简单的方法可以在测试中提供本地化?

现在我正在通过 DI 进行本地化,但这是一个相当大的开销。

Rém*_*let 13

您可以将要测试的小部件包装成一个 Localizations

Localizations(
  delegates: [
    yourDelegate
  ],
  locale: Locale('en'),
  child: YourWidget(),
);
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。等待委托的 Future 完成很重要。我使用 `await tester.pumpAndSettle();` 来实现这一点。 (9认同)

小智 5

上面的答案没有帮助,因为我正在从json文件中调用字符串。媒体博客实际上在解决问题中处理了我的问题。