Sur*_*gch 1 dart flutter text-direction
我正在测试一个包含以下代码的小部件(改编自此处):
await tester.pumpWidget(
MediaQuery(
data: const MediaQueryData(devicePixelRatio: 1.0),
child: FocusScope(
node: focusScopeNode,
autofocus: true,
child: Row(
children: <Widget>[
MongolEditableText(
key: key1,
controller: TextEditingController(),
focusNode: focusNode,
style: const TextStyle(fontSize: 9),
cursorColor: cursorColor,
),
MongolEditableText(
key: key2,
controller: TextEditingController(),
focusNode: focusNode,
style: const TextStyle(fontSize: 9),
cursorColor: cursorColor,
),
],
),
),
),
);
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到以下异常:
具有多个子级的水平 RenderFlex 具有 null textDirection,因此布局顺序未定义。
我尝试textDirection向正在测试的自定义小部件添加一个参数,但这没有改变任何内容。
我在这里找到了答案,所以我在下面添加一个答案。
Flex 小部件喜欢Row或Column需要知道其子项的文本方向。有三种方法可以做到这一点。
MaterialApp 和 CupertinoApp 在内部使用 WidgetsApp。这些都提供了默认的方向性。
MaterialApp(
home: MyWidgetTree(
child: Row(
children: <Widget>[
Run Code Online (Sandbox Code Playgroud)
您还可以使用小部件包裹该行Directionality并为其指定方向,如下所示:
Directionality(
textDirection: TextDirection.ltr,
child: Row(
children: <Widget>[
Run Code Online (Sandbox Code Playgroud)
您可以Row使用以下属性给出指示textDirection:
Row(
textDirection: TextDirection.ltr,
children: <Widget>[
Run Code Online (Sandbox Code Playgroud)
感谢此评论的帮助。