从 Flutter 中的另一个屏幕调用 Future 函数

Calling a Future Function from another screen in Flutter

我在 popup.dart

中有一个 Future 函数
import 'package:flutter/material.dart';
import 'dart:async';

void main() {
  runApp(new MaterialApp(
    home: new Popup(),
    ));
}

class Popup extends StatefulWidget {
  @override
  _PopupState createState() => _PopupState();
}

enum Answers{TEAMA,TEAMB}

class _PopupState extends State<Popup> {

  String _value = '';

  void _setValue(String value) => setState(() => _value = value);

Future _askUser() async {
        switch(
        await showDialog(
          context: context,
          child: new SimpleDialog(
            title: new Text('SELECT YOUR TEAM',
            ),

我有 pages/pageone.dart,我想将其称为“_askUser”到 onTap。

import 'package:flutter/material.dart';
import 'package:myapp/popup.dart';

....

     GestureDetector(
        onTap: _askUser,
        child: Container(
          child: ClipRRect(
            borderRadius: BorderRadius.circular(20.0),
            child: Image.asset('assets/PLUS.png',
              scale: 8),
          ),
        ),
      ),

我遇到错误 "Undefined name '_askUser'."

如何调用_askUser?

在 popup.dart 中一切正常,但我无法在 pageone.dart

中访问相同的弹出窗口 link

提前致谢!

我想最好的实现方式是在 user_service.dart 文件中声明您需要的有关用户的所有信息。在那里,你创建了一个 class like

class UserService {
  var playerTeam; // just for example
  askUser() {} // the underscore in everything indicates it is private. 
}

让你的 askUser 改变 "playerTeam",当你需要调用它时,使用

UserService userService = UserService();
userService.askUser();

我不确定你的代码,但是创建一个 UserService 的单例可能会有很大帮助,因为它只有一个实例