flutter - 使用颤振创建响应式散点图
问题描述
我正在尝试从包 fl_chart 上的散点图小部件创建两个元素的维恩图。
scatterPlot(screenSize) {
return ListView(children: [
SizedBox(
width: 500,
height: 500,
child: ScatterChart(
ScatterChartData(
scatterSpots:
_createSpots(determineCircleLocation(screenSize), screenSize),
minX: 0,
minY: 0,
maxX: screenSize.width,
maxY: screenSize.height,
borderData: FlBorderData(show: false),
...
我有这个问题,每当我调整我的窗口大小时,散点圆圈都会移动 - 所以如果在全屏下看起来它们没有交叉点,当我调整屏幕大小时,它看起来就像有一个交叉点。
我试图将我的情节包装在一个 SizedBox 中,认为这会阻止调整大小的副作用,但它没有。
这是问题的演示
有没有办法防止这种情况发生?
在写这篇文章时,我认为通过改变maxX
和maxY
保持一些常数可能会有所帮助,但它导致了更糟糕的结果。
解决方案
因为我们设置了一个直接大小(无论它以何种大小运行),这个问题就会发生。您可以检查窗口大小,然后根据窗口大小更新点的半径。(我计算了一个数字,然后乘以半径)。
观看下面的视频。并在此处检查代码:
LayoutBuilder(
builder: (context, constraints) {
final size = constraints.biggest.shortestSide;
final radiusMultiplier = size / 800;
return Padding(
padding: const EdgeInsets.only(right: 18.0),
child: ScatterChart(
ScatterChartData(
scatterSpots: [
ScatterSpot(5, 7, radius: 60 * radiusMultiplier,),
ScatterSpot(8, 4, radius: 20 * radiusMultiplier,),
ScatterSpot(3, 8, radius: 70 * radiusMultiplier),
],
minX: 1,
maxX: 10,
minY: 1,
maxY: 10,
)
),
);
},
)
推荐阅读
- javascript - jQuery scrollTop 动画怪异且无法控制的缓动
- julia - 进度条减慢循环
- html - 如何 替换角度 6 中动态字符串的标记
- javascript - 我们应该在页面 React js 中有多少个上下文提供者
- image - 如何在 MATLAB 中读取 RGB 原始文件?
- android - 在 Android Q 的外部存储中创建 App-Specific 文件夹
- neo4j - 计算一个列表中有多少个日期在两个日期之间
- ibm-mq - 将逻辑应用程序连接到 IBM Cloud 中的 MQ
- amazon-web-services - Terraform:AWS 将 NAT 网关附加到两个子网中的一个子网
- r - 使用 insertUI 添加几个闪亮模块的问题