flutter 一个抖动代码,以划分屏幕的垂直空间在3个不同的颜色相同的部分

zmeyuzjn  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(123)

我想把我的屏幕垂直分为三个相等的部分,三种不同的颜色,我只得到白色输出。

import 'package:flutter/material.dart';

void main() {
  runApp(const DivideVertically3EqualParts());
}

class DivideVertically3EqualParts extends StatefulWidget {
  const DivideVertically3EqualParts({super.key});

  @override
  State<DivideVertically3EqualParts> createState() =>
      _DivideVertically3EqualPartsState();
}

class _DivideVertically3EqualPartsState
    extends State<DivideVertically3EqualParts> {
  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        Expanded(
            child: Container(
          color: Colors.orange,
        )),
        Expanded(
            child: Container(
          color: Colors.white,
        )),
        Expanded(
            child: Container(
          color: Colors.green,
        ))
      ],
    );
  }
}

这里是代码,我得到白色屏幕它应该是橙子,白色和绿色。

rhfm7lfc

rhfm7lfc1#

您看到白色可能是由于以下错误
具有多个子项的Horizontal RenderFlex具有空textDirection,因此布局顺序未定义。
您可以检查Flutter error: RenderFlex with multiple children has a null textDirection以了解有关此错误解决方案的详细信息。
解决这个问题最简单的方法是用MaterialApp Package 小部件。

void main() async {
  runApp(
    MaterialApp(
      home: DivideVertically3EqualParts(),
    ),
  );
}

class DivideVertically3EqualParts extends StatefulWidget {
  const DivideVertically3EqualParts({super.key});

  @override
  State<DivideVertically3EqualParts> createState() =>
      _DivideVertically3EqualPartsState();
}

class _DivideVertically3EqualPartsState
    extends State<DivideVertically3EqualParts> {
  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        Expanded(
            child: Container(
              color: Colors.orange,
            )),
        Expanded(
            child: Container(
              color: Colors.white,
            )),
        Expanded(
            child: Container(
              color: Colors.green,
            ))
      ],
    );
  }
}
nnsrf1az

nnsrf1az2#

您的代码需要做一些小的更改。

double width = MediaQuery.of(context).size.width;
Row(
      children: [
        Expanded(
            child: Container(
          width : width : width /3
          color: Colors.orange,
        )),
        Expanded(
            child: Container(
            width : width /3
          color: Colors.white,
        )),
        Expanded(
            child: Container(
            width : width /3
          color: Colors.green,
        ))
      ],
    );

顺便说一句,你的代码很完美。而且对我也有效,

相关问题