小编A.K*_*.K.的帖子

Flutter 小部件单元测试抛出“找不到方向性小部件”

我尝试对一个自己的小部件进行单元测试:

\n\n
testWidgets(\'MyWidget has a title and message\', (WidgetTester tester) async {\n  var text = "abc";\n  var label = "def";\n\n  await tester.pumpWidget(LabeledTextWidget(\n    text,\n    label: label,\n  ));\n\n  final textFinder = find.text(text);\n  final labelFinder = find.text(label);\n\n  expect(textFinder , findsOneWidget);\n  expect(labelFinder, findsOneWidget);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是小部件代码:

\n\n
class LabeledTextWidget extends StatelessWidget {\n  final String text;\n  final String label;\n  LabeledTextWidget(this.text, {this.label});\n\n  @override\n  Widget build(BuildContext context) {\n    return Column(\n      crossAxisAlignment: CrossAxisAlignment.stretch,\n        children: <Widget>[\n         Text(label,style: Theme.of(context).textTheme.caption,),\n         Text(text),\n         ],\n    );\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试总是抛出异常:

\n\n
...\nNo Directionality widget found.\nRichText widgets …
Run Code Online (Sandbox Code Playgroud)

unit-testing widget dart flutter

7
推荐指数
1
解决办法
2863
查看次数

Flutter Injectable:通过注释注入泛型类型的多个实例

我在我的 flutter 项目中使用 get_it 进行依赖注入。现在我正在尝试使用可注入来完成此操作,以用注释替换我的手写依赖文件。

我有一个特殊情况,我有一个通用类,必须使用不同的 T 值注入 3 次。

class TestBloc<T> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这就是我的旧配置中的样子:

sl.registerFactory(() => TestBloc<One>(...);
sl.registerFactory(() => TestBloc<Two>(...);
sl.registerFactory(() => TestBloc<Three>(...);
Run Code Online (Sandbox Code Playgroud)

我如何注释该类才能使其正常工作?

当我添加@injectable时

@injectable
class TestBloc<T> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我明白了(当然):

gh.factory<_i34.TestBloc<dynamic>>(() =>_i34.TestBloc<dynamic>(...);
Run Code Online (Sandbox Code Playgroud)

如何注释才能得到这个?

gh.factory<_i34.TestBloc<One>>(() =>_i34.TestBloc<One>(...);
gh.factory<_i34.TestBloc<Two>>(() =>_i34.TestBloc<Two>(...);
gh.factory<_i34.TestBloc<Three>>(() =>_i34.TestBloc<Three>(...);
Run Code Online (Sandbox Code Playgroud)

generics dependency-injection injectable flutter

5
推荐指数
0
解决办法
671
查看次数