我想创建一种布局,该布局在显示有关公共交通的详细信息的应用程序中很常见。左边是带点的线,右边是站点的详细信息。
我想在Flutter中使用CustomPainter用点画一条线,并通过使用Row并将数据包装在Expanded()中来显示其旁边的数据。
问题是我希望CustomPainter具有与包含数据的Widget相同的高度,该控件是动态的。如果将CustomPainter的高度设置为double.infinite
,则会收到错误消息。
如何确定数据窗口小部件的大小以设置CustomPainter的宽度?
答案 0 :(得分:0)
您可以使用IntrinsicHeight
或IntrinsicWidth
,因此Row
或Column
中的小部件将与其中的最高/最宽小部件一样高/宽:< / 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 '),
)
],
),
),
),
),
);
}
}
结果: