function - 无法使用静态访问访问 Flutter Instance 成员“结果”
问题描述
请放轻松,这是我第一次使用颤振/飞镖(几天),也是我第一次学习语言,我对类和函数没有完全理解......
基本上我已经创建了一个应用程序,它从三个 x,y 点计算圆的直径并输出圆心坐标和圆的直径。我让它在一个 main.dart 文件中工作,但它很乱,我将计算很多其他的东西,其中一些使用这组方程来计算圆形数据以进行进一步的计算。
我在另一个名为“CalcCCenter”的文件(calculator.dart)中创建了一个类,并将其导入到 main.dart:
import 'package:scidart/numdart.dart';
class CalcCCenter {
double x1;
double y1;
double x2;
double y2;
double x3;
double y3;
double cX;
double cY;
double cDiameter;
CalcCCenter(
{this.x1,
this.y1,
this.x2,
this.y2,
this.x3,
this.y3,
this.cX,
this.cY,
this.cDiameter}) {
double a = x1 * (y2 - y3) - y1 * (x2 - x3) + x2 * y3 - x3 * y2;
double b = (x1 * x1 + y1 * y1) * (y3 - y2) +
(x2 * x2 + y2 * y2) * (y1 - y3) +
(x3 * x3 + y3 * y3) * (y2 - y1);
double c = (x1 * x1 + y1 * y1) * (x2 - x3) +
(x2 * x2 + y2 * y2) * (x3 - x1) +
(x3 * x3 + y3 * y3) * (x1 - x2);
cX = -b / (2 * a);
cY = -c / (2 * a);
print('Circle center X $cX');
print('Circle center y $cY');
cDiameter = ((hypotenuse(cX - x1, cY - y1)) * 2);
print('Circle diameter $cDiameter');
}
}
在 main.dart 我有这个:
onPressed: () {
setState(
() {
double x1 = double.parse(num1controller.text);
double y1 = double.parse(num2controller.text);
double x2 = double.parse(num3controller.text);
double y2 = double.parse(num4controller.text);
double x3 = double.parse(num5controller.text);
double y3 = double.parse(num6controller.text);
CalcCCenter(
x1: x1,
y1: y1,
x2: x2,
y2: y2,
x3: x3,
y3: y3,
);
//some code here to bring the values from calulator.dart
},
);
},
应用程序的输入工作正常,calulator.dart 中的“CalcCCenter”类正在获取值并打印它们(来自calculator.dart)。我只需要将它们(cX、cY 和 Cdiameter)带回 main.dart 即可使用。我将如何使用函数执行此操作?我尝试了一些事情,但不断收到错误“Flutter Instance member 'result' can't be access using static access”。抱歉,如果这对许多人来说似乎很基本,但我才刚刚开始。
解决方案
您可以调用一个函数,该函数返回一个包含计算值的列表,而不是计算构造函数内的所有内容。
示例代码:
class CalcCCenter {
List calculate({double x1, double y1, double x2, double y2, double x3, double y3}) {
double a = x1 * (y2 - y3) - y1 * (x2 - x3) + x2 * y3 - x3 * y2;
double b = (x1 * x1 + y1 * y1) * (y3 - y2) +
(x2 * x2 + y2 * y2) * (y1 - y3) +
(x3 * x3 + y3 * y3) * (y2 - y1);
double c = (x1 * x1 + y1 * y1) * (x2 - x3) +
(x2 * x2 + y2 * y2) * (x3 - x1) +
(x3 * x3 + y3 * y3) * (x1 - x2);
double cX = -b / (2 * a);
double cY = -c / (2 * a);
double cDiameter = ((hypotenuse(cX - x1, cY - y1)) * 2);
print('Circle diameter $cDiameter');
print('Circle center X $cX');
print('Circle center y $cY');
return [cX, cY, cDiameter];
}
}
然后在你的'onPressed'方法中这样调用它:
onPressed: () {
setState(
() {
double x1 = double.parse(num1controller.text);
double y1 = double.parse(num2controller.text);
double x2 = double.parse(num3controller.text);
double y2 = double.parse(num4controller.text);
double x3 = double.parse(num5controller.text);
double y3 = double.parse(num6controller.text);
List result = CalcCCenter().calculate(x1: x1, y1: y1, x2: x2, y2: y2, x3: x3, y3: y3);
// Now you can access the calculated values
print('cX: ${result[0]}');
print('cY: ${result[1]}');
print('cDiameter: ${result[2]}');
},
);
},
推荐阅读
- android - 权限默认对话框未显示
- javascript - 在滚动上转换 translate3d
- makefile - make/Makefile:用于“禁用”来自目标的依赖项的 CLI 选项
- excel - 将 XML 数据批量导出到 Excel 电子表格
- apache-spark - Spark如何按顺序加载有序parquet分区文件?
- python - 将可执行代码添加到我的 wxpython gui 文本框
- jira - 显示任务中每个子任务的标签字段
- powerbi - 如何使用关键字列表过滤 Power BI 表(在其他表的列中)
- php - Laravel Carbon,如何获取两个日期范围之间的所有日期?
- azure - 如何在身份验证和授权配置中添加范围