如何基于其他窗口小部件在行中调整窗口小部件的大小?

时间:2019-07-19 15:39:16

标签: flutter flutter-layout

我想创建一种布局,该布局在显示有关公共交通的详细信息的应用程序中很常见。左边是带点的线,右边是站点的详细信息。

我想在Flutter中使用CustomPainter用点画一条线,并通过使用Row并将数据包装在Expanded()中来显示其旁边的数据。

问题是我希望CustomPainter具有与包含数据的Widget相同的高度,该控件是动态的。如果将CustomPainter的高度设置为double.infinite,则会收到错误消息。

如何确定数据窗口小部件的大小以设置CustomPainter的宽度?

Drawing describing the UI I want to achieve

1 个答案:

答案 0 :(得分:0)

您可以使用IntrinsicHeightIntrinsicWidth,因此RowColumn中的小部件将与其中的最高/最宽小部件一样高/宽:< / p>

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          appBar: AppBar(
            title: Text('Intrinsic Height'),
          ),
          body: IntrinsicHeight(
            child: Row(
              children: <Widget>[
                Container(
                  width: 50,
                  color: Colors.red,
                ),
                Expanded(
                  child: Text(
                      'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, '
                      'totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt '
                      'explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur '
                      'magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia '
                      'dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore '),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

结果:

enter image description here