Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 从类调用函数会给我一个错误_Flutter_Dart - Fatal编程技术网

Flutter 从类调用函数会给我一个错误

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

我正在尝试在另一个类中运行函数。当我这样做时,我会收到一条错误消息,上面说:

“\u makeGetRequest”必须有一个方法体,因为“Home”不是 摘要尝试将“Home”抽象化,或者在其中添加一个主体 “\u makeGetRequest.dartconcrete\u class\u与\u abstract\u成员”

代码如下:

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,有关更多详细信息,请参阅