从 Flutter 中的另一个文件调用 Future

Calling a Future from another file in Flutter

我正在尝试将数据从 Future 获取到另一个 .dart 文件。

为此,我在 Future 代码之后创建了一个 class。

pageone.dart中的代码:

 class Popups extends StatefulWidget {
 @override
 _PopupsState createState() => _PopupsState();
 }

 class _PopupsState extends State<Popups> {

  Future oyuncuSec() async {
     await showDialog(
       context: context,
...
...

  }
}

class UserService {
  oyuncuSec() {}
}

pagetwo.dart中的代码,我想在这里调用相同的Future代码:

import 'package:myappname/pageone.dart';

.
.

UserService userService = UserService();

.
.

    RaisedButton(
      onPressed: () => userService.oyuncuSec(), child: Text('Futbolcu Resmi'),),

但是,当我 运行 页面并按下 RaisedButton (Futbolcu Resmi) 时,它不会显示弹出窗口。我坚持了好几天。请帮助我。

我看到您已经创建了一个单独的 class,其中包含函数定义,这是正确的做法!

您的代码中肯定遗漏了一些最少的东西,请确保按如下方式定义 class 和函数:

假设您正在编写 class,它在名为 data.dart.

的文件中具有函数

data.dart 应该是这样的:

Class DataSource {
  Future oyuncuSec() async {
     await showDialog(
       context: context,
       ...
       ...
  }
}

现在假设您想在名为 x.dart 的文件中使用此函数,如下所示:

在 x.dart 中(它有一个有状态的小部件),在构建函数之外:

var dataSource = new Datasource();

//an example function:
getData() async {
   await dataSource.oyuncuSec(); //use a .then() in the end if the function oyuncuSec returns something and you want to do something with the result... 
}

编辑:如果您不希望 oyuncuSec return 任何内容而只是弹出窗口,则无需将其 return 类型设置为 Future。只需将其定义为 void oyuncuSec() {//code for popup}