扑创建自己的类

时间:2018-10-12 04:34:46

标签: dart flutter

我正在尝试使用特定身份验证过程内部的方法创建一个类

所以我创建了一个文件MyAuthMethods.dart

class UserAuth {

  static int seconds = 10000000;
  static String username;
  static String password;
  static String key = "abc123";

  static Future<String> _generateAuthCode(seconds, username, password, key) async{
    var result = "something";
    print("Seconds: seconds, Username: username, Password: password, Key: key");

    return result;
  }

}

在我的表单(FormScreen.dart)上,有一个onPressed按钮可以执行功能

onPressed:(){
  UserAuth._generateAuthCode(UserAuth.seconds, "username", "password", UserAuth.key);
}

但不起作用。它说:

error: The method '_generateAuthCode' isn't defined for the class 'UserAuth'.

我需要更改什么?

2 个答案:

答案 0 :(得分:1)

与Java不同,Dart没有关键字public,protected和private。如果标识符以下划线(_)开头,则表示该标识符是其库的私有内容。

Libraries and visibility

因此_generateAuthCode是您的类的私有方法,因此只允许您访问。

答案 1 :(得分:0)

在Dart中,没有关键字public,protected和private。为了使变量或函数对类私有,变量或函数的名称必须以下划线(_)开头。没有下划线(_)的变量/函数是公共的。您已经定义了私有功能并访问了私有功能。您可以通过将函数公开来进行修复:为此,只需从函数中删除下划线,将其设置为generateAuthCode

class UserAuth {

  static int seconds = 10000000;
  static String username;
  static String password;
  static String key = "abc123";

  static Future<String> generateAuthCode(seconds, username, password, key) async{
    var result = "something";
    print("Seconds: seconds, Username: username, Password: password, Key: key");

    return result;
  }

}