下面的代码展示了一个图表,我需要在该图表中实现垂直(高度)和水平(宽度)两个方向的扩展.建议的方法(例如https://docs.flutter.io/flutter/widgets/Row-class.html)是在Row
或Column
中使用Expanded
.
我试图扩展的图表小部件扩展了CustomPaint
,没有子项,所有内容都是使用画布上的CustomPainter
绘制的,在CustomPainter.paint(canvas, size)
中.
此代码
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'vvvvvvvv:',
),
new RaisedButton(
color: Colors.green,
onPressed: _chartStateChanger,
),
new Text(
'vvvvvvvv:',
),
new Expanded( // Expanded in Column, no expansion vertically
child: new Row(
children: [
new Text('>>>'),
new Expanded(// Expanded in Row, expands horizontally
child: new Chart( // extends CustomPaint
// size: chartLogicalSize,
painter: new ChartPainter( // extends CustomPainter
chartData: _chartData,
chartOptions: _chartOptions,
),
),
),
new Text('<<<'),
],
), // row
),
new Text('^^^^^^:'),
new RaisedButton(
color: Colors.green,
onPressed: _chartStateChanger,
),
],
),
),
);
结果如下:(为简洁起见,未显示ChartPainter代码)
在ChartPainter.paint(canvas, size)
的内部有一个print()
打印尺寸.
打印(###大小:paint():通过的大小=${Size});
The result from the paint->print above is:
I/Ffltter(4187):#Size:Paint():Passed Size=Size(340.0,0.0)
打印和图像一起显示,行级别的宽度扩展被传递到CustomPainter.print(canvas, size)
(宽度=340.0),但列的高度扩展没有传递到自定义绘制打印(高度=0.0).虽然结果显示该行确实获得了它的扩展高度,但如果没有在该行内部传递到CustomPainter
-0高度,则会收到.
我需要改变什么才能实现身高的增加呢?
谢谢