Flutter 从颤振中的另一个文件调用未来

Flutter 从颤振中的另一个文件调用未来,flutter,dart,popup,call,future,Flutter,Dart,Popup,Call,Future,我正在尝试从Future将数据获取到另一个.dart文件 为此,我在Futurecode之后创建了一个类 pageone.dart中的代码: class Popups extends StatefulWidget { @override _PopupsState createState() => _PopupsState(); } class _PopupsState extends State<Popups> { Future oyuncuSec() asy

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

为此,我在
Future
code之后创建了一个类

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() {}
}

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

我看到您创建了一个单独的类,其中包含函数定义,这是正确的方法

您的代码中必须缺少一些最小的内容,请确保按如下方式定义类和函数:

假设您正在编写一个类,该类的函数位于一个名为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... 
}

编辑:如果您不想返回任何内容,只需弹出一个窗口,则无需将其返回类型设置为Future。只需将其定义为
void-oyunsec(){//code-for-popup}

什么是用户服务,为什么要尝试实例化它?我无法使用Popups类而不会出错。这就是我创建UserService的原因。如果不是这样,我可以删除它。这是一个很好的方法,谢谢你的澄清。我建议在“lib”旁边创建一个名为“data”的文件夹,并将新创建的类和函数放在该文件中。在第一页和第二页实例化后使用该函数。我会在稍后写一个详细的答案…感谢您的帮助Yudhishthir!我的data.dart出现错误。我确实照你说的做了。大多数错误表示“找不到方法”。你能帮我解决这个问题吗?你正在导入调用函数的data.dart文件吗?我刚刚解决了错误。现在,我只是在说“未定义的名称‘context’”时出错。“抱歉,您试图提供帮助,但我仍然无法显示弹出窗口。您必须传递上下文,按如下方式定义OYUNUSEC函数:Future OYUNUSEC(BuildContext context)async{…},并且在调用它时,按如下方式将上下文作为参数传递:Wait dataSource.OYUNUSSEC(context);
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... 
}