gpt4 book ai didi

测试:未找到 MaterialLocalizations。 AppBar 小部件需要提供 MaterialLocalizations

转载 作者:IT王子 更新时间:2023-10-29 07:22:35 26 4
gpt4 key购买 nike

在测试包含 Scaffold() 的全屏小部件时,出现此错误:

No MaterialLocalizations found.
AppBar widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.

我试图注入(inject) Localizations 小部件,但错误仍然存​​在。对如何进行测试有任何想法吗?

testWidgets('MiniScaffold', (WidgetTester tester) async {
await tester.pumpWidget(Wrap(child: MiniScaffold()));
expect(find.text('Hello'), findsOneWidget);
await tester.pumpWidget(Container());
});

class MiniScaffold extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Hello'),
actions: <Widget>[],
),
body: Container());
}
}

class Wrap extends StatelessWidget {
final Widget child;

const Wrap({Key key, this.child}) : super(key: key);

@override
Widget build(BuildContext context) {
return MediaQuery(
data: new MediaQueryData(),
child: Localizations(
locale: Locale('en-US'),
delegates: [
DefaultMaterialLocalizations.delegate,
DefaultWidgetsLocalizations.delegate,
],
child: Directionality(
textDirection: TextDirection.ltr,
child: this.child,
)));
}
}

最佳答案

最简单的解决方案是将您的 Scaffold 包装到 MaterialApp

MaterialApp 将包括本地化、媒体查询和其他一些您自己必须包含的内容。

关于测试:未找到 MaterialLocalizations。 AppBar 小部件需要提供 MaterialLocalizations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com