行小部件需要textDirection

时间:2020-11-11 14:25:50

标签: flutter

使用行或列窗口小部件会导致以下错误:

════════ Exception caught by rendering library ═════════════════════════════════════════════════════
Horizontal RenderFlex with MainAxisAlignment.start has a null textDirection, so the alignment cannot be resolved.
'package:flutter/src/rendering/flex.dart':
Failed assertion: line 462 pos 18: 'textDirection != null'
The relevant error-causing widget was: 
  Row file:///C:/Users/...
════════════════════════════════════════════════════════════════════════════════════════════════════

除非我为行/列窗口小部件提供textDirection属性,否则它将起作用。这是一个示例:

import 'package:flutter/material.dart';

void main() {
  runApp(MyWidget());
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisSize: MainAxisSize.min,
      mainAxisAlignment: MainAxisAlignment.start,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      // textDirection: TextDirection.ltr,
      children: [
        BlueBox(),
        BlueBox(),
        BlueBox(),
      ],
    );
  }
}

我不理解为什么除非添加textDirection属性,否则代码不起作用。 注意:我正在关注此文档https://flutter.dev/docs/codelabs/layout-basics

1 个答案:

答案 0 :(得分:1)

根据docs

textDirection参数默认为环境方向性,如果 任何。如果没有环境方向性,并且文本方向为 是确定布局顺序所必需的(通常 除非该行没有孩子或只有一个孩子),否则 清除mainAxisAlignment的开始或结束值, textDirection不能为null。