如何在 Flutter 中对这种方法进行通用调用

How to make a universal call to this method in Flutter

提问人:Julian Hernandez 提问时间:7/25/2022 最后编辑:Frank van PuffelenJulian Hernandez 更新时间:7/25/2022 访问量:147

问:

我怎样才能对这种方法进行通用调用,我需要在另一个文件中使用它,但这对我来说是不可能的。帮我飘

 void loginScreen() {
    showModalBottomSheet(
      backgroundColor: Colors.transparent,
      context: context,
      isScrollControlled: true,
      builder: (BuildContext context) {
        return LoginScreen();
      },
    );
  }

  void registerScreen() {
    showModalBottomSheet(
      backgroundColor: Colors.transparent,
      context: context,
      isScrollControlled: true,
      builder: (BuildContext context) {
        return RegisterScreen();
      },
    );
  }`enter code here`

我有这个代码,我想在这里实现它

class _ButtonTextState extends State<ButtonText> {
  @override
  Widget build(BuildContext context) {
    return TextButton(
        style: ButtonStyle(
            overlayColor: MaterialStateProperty.all(Colors.transparent)),
        onPressed: () {
          loginScreen();//Error
        },
        child: const Text(
          "Ingresa aquí",
          style: const TextStyle(color: Colors.blue, fontSize: 12),
        ));
  }

这就是问题所在,我有一个需要重用的方法,但是我无法将其从原始文件中取出,我不知道如何导入它或进行调用

flutter button 方法 firebase-authentication 调用

评论


答:

0赞 DholaHardik 7/25/2022 #1

创建一个通用类,如 .并在那里添加您的对话框。utils.dart

utils.dart

class Utils {

  static void loginScreen({required BuildContext context}) {
    showModalBottomSheet(
      backgroundColor: Colors.transparent,
      context: context,
      isScrollControlled: true,
      builder: (BuildContext context) {
        return LoginScreen();
      },
    );
  }

  static void registerScreen({required BuildContext context}) {
    showModalBottomSheet(
      backgroundColor: Colors.transparent,
      context: context,
      isScrollControlled: true,
      builder: (BuildContext context) {
        return RegisterScreen();
      },
    );
  }
}

// 现在,将类导入到小部件中并按如下方式使用:utils.dartButtonTextUtils.loginScreen(context: context); //

class _ButtonTextState extends State<ButtonText> {
  @override
  Widget build(BuildContext context) {
    return TextButton(
        style: ButtonStyle(
            overlayColor: MaterialStateProperty.all(Colors.transparent)),
        onPressed: () {
          Utils.loginScreen(context: context);
        },
        child: const Text(
          "Ingresa aquí",
          style: const TextStyle(color: Colors.blue, fontSize: 12),
        ));
  }