颤振错误:具有多个子节点的RenderFlex具有空textDirection



我正在测试一个小部件,它包含以下代码(从这里改编):

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参数到我的自定义小部件,我正在测试,但这并没有改变任何东西。

我在这里找到了答案,所以我在下面添加了一个答案。

RowColumn这样的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>[

来源感谢这个评论的帮助。

最新更新