Вызов будущей функции с другого экрана во флаттере - PullRequest
1 голос
/ 06 января 2020

У меня есть функция будущего в popup.dart

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),
          ),
        ),
      ),

Я получаю ошибку" Неопределенное имя '_askUser'. "

Как вызвать _askUser?

В popup.dart, все работает, но я не могу получить доступ к той же всплывающей ссылке в pageone.dart

Заранее спасибо!

1 Ответ

0 голосов
/ 07 января 2020

Полагаю, лучшая реализация этого - объявление всего, что вам нужно о пользователе, в файле user_service.dart. Там вы создаете класс, подобный

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

, задайте в свой AskUser значение playerTeam, и когда вам нужно будет вызвать его, используйте

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

И я не уверен в ваших код, но создание одиночного UserService может очень помочь, так как у него будет только один экземпляр

...