下面的代码列出了一个图表,我需要在其中实现图表在垂直(高度)和水平(宽度)方向上的扩展。建议的方法(例如https://docs.flutter.io/flutter/widgets/Row-class.html https://docs.flutter.io/flutter/widgets/Row-class.html)是使用Expanded
in Row
or Column
.
我试图扩展的图表小部件扩展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,
),
],
),
),
);
result looks like this: (code of ChartPainter is not shown for brevity)
在 - 的里面ChartPainter.paint(canvas, size)
有一个print()
打印尺寸。
print(" ### 大小:paint(): 传递的大小 = ${size}");
上面的paint->print的结果是:
I/flutter ( 4187): ### 大小:paint(): 传递的大小 = Size(340.0, 0.0)
打印和图像显示,行级别的宽度扩展被传递到CustomPainter.print(canvas, size)
(宽度= 340.0),但是列上的高度扩展没有传递给自定义画家打印(高度= 0.0)。尽管结果显示该行确实获得了扩展的高度,但如果没有在行内部传递给CustomPainter
- 收到 0 高度。
我需要改变什么才能实现高度扩展?
Thanks