我正在测试一个小部件,它包含以下代码(从这里改编):
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,
),
],
),
),
),
);
但是当我这样做时,我得到以下异常:
水平RenderFlex与多个子有一个空textDirection,所以布局顺序是定义。
我尝试添加一个textDirection
参数到我的自定义小部件,我正在测试,但这并没有改变任何东西。
我在这里找到了答案,所以我在下面添加了一个答案。
像Row
或Column
这样的flex小部件需要知道其子部件的文本方向。有三种方法可以做到这一点。
1。使用WidgetsApp祖先
MaterialApp和CupertinoApp在内部使用WidgetsApp。这些都提供了默认的方向性。
MaterialApp(
home: MyWidgetTree(
child: Row(
children: <Widget>[
2。使用方向性小部件进行换行
您还可以用Directionality
小部件包装行,并给它一个这样的方向:
Directionality(
textDirection: TextDirection.ltr,
child: Row(
children: <Widget>[
3。添加一个textDirection属性
你可以使用textDirection
属性给Row
一个方向:
Row(
textDirection: TextDirection.ltr,
children: <Widget>[
来源感谢这个评论的帮助。