Вызов будущего из другого файла в Flutter - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь получить данные в другой файл .dart из Future.

Для этого я создал класс после Future кода.

кода в 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), она не отображается во всплывающем окне. Я придерживаюсь этого в течение нескольких дней. Пожалуйста, помогите мне.

1 Ответ

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

Я вижу, что вы создали отдельный класс с определением функции внутри него, это правильный способ сделать это!

Вы должны пропустить что-то минимальное в своем коде, убедитесь, что вы определили класс и функция выглядит следующим образом:

Допустим, вы пишете класс с функцией в файле с именем 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... 
}

Редактировать: Если вы не хотите, чтобы oyuncuSe c что-либо возвращал и просто делал всплывающее окно, нет необходимости устанавливать его тип возврата как Future. Просто определите это как void oyuncuSec() {//code for popup}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...