flutter - Flutter 错误:具有多个子项的 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
我正在测试的自定义小部件添加一个参数,但这并没有改变任何东西。
我在这里找到了答案,所以我在下面添加了一个答案。
解决方案
一个 flex 小部件喜欢Row
或Column
需要知道其子元素的文本方向。有三种方法可以做到这一点。
1. 使用 WidgetsApp 祖先
MaterialApp 和 CupertinoApp 在内部使用 WidgetsApp。这些都提供了默认的方向性。
MaterialApp(
home: MyWidgetTree(
child: Row(
children: <Widget>[
2. 用 Directionality 小部件包装
您还可以使用Directionality
小部件包装该行并为其指定方向,如下所示:
Directionality(
textDirection: TextDirection.ltr,
child: Row(
children: <Widget>[
3.添加一个textDirection属性
您可以使用属性给出Row
一个方向:textDirection
Row(
textDirection: TextDirection.ltr,
children: <Widget>[
资源
感谢此评论的帮助。
推荐阅读
- sql - SQL 更新 where select top(num)
- dynamics-crm - 是否可以使用“/api/data/”创建“customeraddress”实体记录
/' 接口? - variables - 如何动态加载 var 文件并使用 ansible 将它们组合成一个变量
- angularjs - ui-scroll:滚动时禁用更新/获取
- c++ - 前向声明或继承 std::type_index
- python-3.x - 添加具有其他列名称作为变量的列
- agile - ROI(商业价值)的故事映射和用户故事优先级
- c# - 为什么dotnet在ubuntu上构建会输出一个dll文件?
- c++ - 我可以根据私有/受保护成员分配类枚举吗?
- django - 如何在多对多字段中隐藏 Django Admin 的一些用户组