Flutter 从类调用函数会给我一个错误
我正在尝试在另一个类中运行函数。当我这样做时,我会收到一条错误消息,上面说: “\u makeGetRequest”必须有一个方法体,因为“Home”不是 摘要尝试将“Home”抽象化,或者在其中添加一个主体 “\u makeGetRequest.dartconcrete\u class\u与\u abstract\u成员” 代码如下:Flutter 从类调用函数会给我一个错误,flutter,dart,Flutter,Dart,我正在尝试在另一个类中运行函数。当我这样做时,我会收到一条错误消息,上面说: “\u makeGetRequest”必须有一个方法体,因为“Home”不是 摘要尝试将“Home”抽象化,或者在其中添加一个主体 “\u makeGetRequest.dartconcrete\u class\u与\u abstract\u成员” 代码如下: class Home extends StatelessWidget { _makeGetRequest(); // Error is here @o
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');
}
我试着把家庭课抽象化,但程序当时不起作用。如何在此类中调用函数?您遇到的问题是在类声明中进行方法调用。什么时候应该调用_makeGetRequest? 您可以从编写的构建方法的主体中调用该方法,或者为此而添加到类中的任何其他方法。 这有意义吗?也许你可以进一步解释你想要实现什么,也许还有更好的方法。。。。
干杯您遇到的问题是在类声明中进行方法调用。什么时候应该调用_makeGetRequest? 您可以从编写的构建方法的主体中调用该方法,或者为此而添加到类中的任何其他方法。 这有意义吗?也许你可以进一步解释你想要实现什么,也许还有更好的方法。。。。
干杯您不能直接在类主体内部调用与类成员处于同一级别的方法。您可以在build方法中调用_makeGetRequest,但这可能不是您想要的。您希望方法在什么时候运行?您不能直接在类主体内部调用与类成员处于同一级别的方法。您可以在build方法中调用_makeGetRequest,但这可能不是您想要的。您希望方法在什么时候运行
class Home extends StatelessWidget {
Home(){
_makeGetRequest(); // option 1. to call the function only when the class is instantiated
}
@override
Widget build(BuildContext context) {
_makeGetRequest(); // option 2. to call the function on every rebuild
return Scaffold(
appBar: AppBar(title: Text('CRUD Bro')),
body: Center(
child: Text('My App'),
),
);
}
}
_makeGetRequest() async {
print('hello');
}
使用选项1或2
使用选项1或2。根据您的代码,该方法属于同一类而不是另一类,对吗 无论如何,这个错误消息并不是说要抽象地解决您的问题 问题,但事实上编译器被搞糊涂了,它读到这行:
_makeGetRequest();
然后编译器开始这样思考:嗯,这是一个没有主体的函数signaturefunction!,所以这个开发人员正试图创建一个抽象类,因为抽象类可以有函数而没有主体,但是这个开发人员忘记了添加抽象关键字,比如这个抽象类Home。。。
那么,是一个抽象类和'abstract'关键字丢失了,还是一个普通类和函数体丢失了?!!因此,这个可爱的编译器将在错误消息中告诉您它的想法:
尝试将“Home”抽象化,或将正文添加到“\u makeGetRequest”
但这两种选择都不是解决方案,正如我所说的,它只是被弄糊涂了
但为什么会这样呢
因为类类似于“汽车”的概念,你不能驱动汽车的概念,但你需要先从这个概念创建一个对象,一辆宝马,然后你可以驱动那个宝马。换句话说,你可以调用对象上的方法而不是类,因为你可以驱动汽车的对象,但不能驱动汽车的概念
要调用方法,您至少有以下4个选项:
1-在任何从不同类调用方法的语言中,首先在该不同类中创建对象,然后在该对象上调用它们:
不要将其用于颤振的小部件,请参见下面的选项4
甲级{
B=B;
b、 makeGetRequest;
}
//..
B类{
makeGetRequest异步{//非私有否_
打印“你好”;
}
}
2-在任何语言中调用同一类中的方法,都可以在构造函数中调用,就像Doc的答案一样
3-在flatter中调用同一类中的方法,在构建中调用它,就像Doc的答案一样
4-在Flatter中调用不同类中的方法时,您需要一个bloc,有关更多详细信息,请参阅。根据您的代码,该方法在同一类中,而不是在另一类中,对吗 无论如何,这个错误消息并不是说要抽象地解决您的问题 问题,但事实上编译器被搞糊涂了,它读到这行:
_makeGetRequest();
然后编译器开始这样思考:嗯,这是一个没有主体的函数signaturefunction!,所以这个开发人员正试图创建一个抽象类,因为抽象类可以有函数而没有主体,但是这个开发人员忘记了添加抽象关键字,比如这个抽象类Home。。。
那么,是一个抽象类和'abstract'关键字丢失了,还是一个普通类和函数体丢失了?!!因此,这个可爱的编译器将在错误消息中告诉您它的想法:
尝试将“Home”抽象化,或将正文添加到“\u makeGetRequest”
但这两种选择都不是解决方案,正如我所说的,它只是被弄糊涂了
但为什么会这样呢
因为类类似于“汽车”的概念,你不能驱动汽车的概念,但你需要先从这个概念创建一个对象,一辆宝马,然后你可以驱动那个宝马。换句话说,你可以调用对象上的方法而不是类,因为你可以驱动汽车的对象,但不能驱动汽车的概念
要调用方法,您至少有以下4个选项:
<
p> 1-在任何从不同类调用方法的语言中,首先在该不同类中创建对象,然后在该对象上调用它们:
不要将其用于颤振的小部件,请参见下面的选项4
甲级{
B=B;
b、 makeGetRequest;
}
//..
B类{
makeGetRequest异步{//非私有否_
打印“你好”;
}
}
2-在任何语言中调用同一类中的方法,都可以在构造函数中调用,就像Doc的答案一样
3-在flatter中调用同一类中的方法,在构建中调用它,就像Doc的答案一样
4-在Flatter中调用不同类中的方法时,需要一个bloc,有关更多详细信息,请参阅