包含AspectRatio小部件时,Flutter Table的大小无法正确调整

问题描述 投票:0回答:1

我有一个由Table个小部件组成的AspectRatio。此Table位于带有另一个小部件的Column内部,例如一个Text。然后,我使用Table小部件及其Text参数在Expandedflex之间分配空间。即使没有足够的垂直空间,Table总是会填满屏幕宽度,因此会被Column中的第二个小部件剪裁。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: Scaffold(
          appBar: AppBar(
            title: Text('Material App Bar'),
          ),
          body: MyHomePage()),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(
          flex: 1, 
          child: MyTable()
        ),
        Expanded(
          flex: 2,
          child: Container(
            color: Colors.green,
          ),
        )
      ],
    );
  }
}

class MyTable extends StatelessWidget {
  const MyTable({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var cell = AspectRatio(
    aspectRatio: 1.0,
    child: Container(),
    );
    var row = TableRow(children: [
      cell,
      cell,
      cell,
    ]);

    return Table(
      border: TableBorder.all(width: 4),
      children: [
        row,
        row,
        row,
      ],
    );
  }
}

查看结果“ https://imgur.com/a/rxx5IcN

flutter flutter-layout
1个回答
0
投票

我没有精确找出导致问题的原因。我认为这与布局算法的调用顺序有关。我通过组合使用ColumnRowFlexible Widgets解决了该问题。缺点是我必须手动添加边框。

© www.soinside.com 2019 - 2024. All rights reserved.