gpt4 book ai didi

flutter - 从一个类调用一个函数给我一个错误

转载 作者:行者123 更新时间:2023-12-03 04:10:19 26 4
gpt4 key购买 nike

我正在尝试在另一个类中运行一个函数。当我这样做时,我收到一条错误消息,内容如下:

'_makeGetRequest' must have a method body because 'Home' isn't abstract. Try making 'Home' abstract, or adding a body to '_makeGetRequest'.dart(concrete_class_with_abstract_member)

代码如下:

class Home extends StatelessWidget {
_makeGetRequest(); // Error is here

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('CRUD Bro')),
body: Center(
child: Text('My App'),
),
);
}
}

_makeGetRequest() async {
print('hello');
}

我尝试将 Home 类抽象化,但程序无法运行。如何调用此类中的函数?

最佳答案

根据您的代码,该方法在同一个类中而不是另一个类中,对吗?

无论如何,这个错误消息并不是说“让它抽象来解决你的问题 问题”,但实际上编译器感到困惑,它读取这一行:

_makeGetRequest();

然后编译器开始这样想:“嗯,这是一个函数的签名(没有主体的函数!),所以这个开发人员试图创建一个抽象类(因为抽象类可以有没有主体的函数)但是这个开发人员忘记了添加像这样的抽象关键字 abstract class Home...所以,是缺少抽象类和“抽象”关键字,还是缺少普通类和函数的主体?!!"所以这个可爱的编译器会在错误消息中告诉您它的想法:

Try making 'Home' abstract, or adding a body to '_makeGetRequest'...

但这两个选项都不是解决方案,正如我所说,它只是变得困惑。

但为什么会这样呢?

因为类就像“汽车”的想法,你不能驾驶汽车的想法,但你需要先从那个想法创建一个对象,一辆宝马,然后你可以驾驶那辆宝马(换句话说,你可以调用对象而不是类的方法,因为你可以驾驶汽车的对象而不是汽车的想法)。

要调用方法,您至少有以下 4 个选项:

1-(在任何语言中)从不同的类调用方法,首先在那个不同的类中创建对象,然后在那个对象上调用它们:不要将它与 flutter 的小部件一起使用,请参阅下面的选项 4

class A {
B b = B();
b.makeGetRequest();
}

//..
class B {
makeGetRequest() async { // NOT PRIVATE(NO _)
print('hello');
}
}

2-(用任何语言)调用同一个类中的方法,在构造函数中调用它,就像 Doc 的回答。

3-(在 Flutter 中)调用同一个类中的方法,在构建中调用它,就像 Doc 的回答一样。

4-(在 Flutter 中)调用不同类中的方法,你需要一个 bloc,参见 my answer here了解更多详情。

关于flutter - 从一个类调用一个函数给我一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com