Я не могу вызвать метод в свойстве onPressed (flutter)

#flutter #dart

#трепетать #dart

Вопрос:

я попытался получить доступ к методу из моего файла глобальных переменных, но я не знаю как. Это основной код, с помощью которого я пытаюсь вызвать метод:

 import '../../global_variables.dart';
import '../../main_components/default_button.dart';
class WelcomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        GlobalVariables().init(context);
        final globalVariables = GlobalVariables();
        final screen = GlobalVariables.screen;

        return DefaultButton(
          screen: screen,
          txt: 'Entrar',
          style: kWhiteButtonTextStyle,
          color: kBlackColor,
          function: globalVariables.NavigationToLoginPage(context),
        ),
      }
    }
  

Это код файла глобальных переменных:

 import 'pages/login/login_page.dart';

class GlobalVariables {
  static MediaQueryData _mediaQueryData;
  static Size screen;

  NavigationToLoginPage(BuildContext context) {
    Navigator.push(
        context, MaterialPageRoute(builder: (context) => LoginPage()));
  }
  

И это класс button по умолчанию, я должен вызвать этот метод в свойстве onPressed.

   const DefaultButton({
    Key key,
    @required this.screen,
    @required this.txt,
    @required this.style,
    @required this.color,
    @required this.function,
  }) : super(key: key);

  final Size screen;
  final String txt;
  final TextStyle style;
  final Color color;
  final Function function;

  @override
  Widget build(BuildContext context) {
    return FlatButton(
      child: Text(
        txt,
        style: style,
      ),
      color: color,
      padding: EdgeInsets.only(
        top: screen.height * 0.02,
        left: screen.width * 0.3,
        bottom: screen.height * 0.02,
        right: screen.width * 0.3,
      ),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(10),
      ),
      onPressed: function,
    );
  }
}
  

Ответ №1:

Сделайте это:

  return DefaultButton(
      screen: screen,
      txt: 'Entrar',
      style: kWhiteButtonTextStyle,
      color: kBlackColor,
      function: () => globalVariables.NavigationToLoginPage(context),
),
  

Комментарии:

1. Извини, чувак, но это не сработало… Мой экран теперь черный, ха-ха

2. Я так думаю, но не совсем, потому что экран моего приложения теперь черный, я попытался перезапустить, но не сработало.

3. Хорошо, теперь функция onPressed работает, но с глобальными переменными ничего не происходит, и она не указывает на страницу входа.