我正在尝试使用特定身份验证过程内部的方法创建一个类
所以我创建了一个文件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'.
我需要更改什么?
答案 0 :(得分:1)
与Java不同,Dart没有关键字public,protected和private。如果标识符以下划线(_)开头,则表示该标识符是其库的私有内容。
因此_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;
}
}