首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用静态访问访问实例成员“updateUser”

无法使用静态访问访问实例成员“updateUser”
EN

Stack Overflow用户
提问于 2022-06-06 13:02:38
回答 1查看 1.5K关注 0票数 -2

我得到了错误:Instance member 'updateUser' can't be accessed using static access.,但我无法将updateUser方法转换为静态方法,因为它使用的是TextControllers。我该如何解决这个问题?

错误:Instance member 'updateUser' can't be accessed using static access.

使用未来updateUser:

代码语言:javascript
运行
复制
Padding(
                                  padding: const EdgeInsets.all(
                                      8.0),
                                  child: ElevatedButton(
                                    child: Text("Bearbeiten"),
                                    onPressed: () async {
                                      if (_formKey.currentState.validate()) {
                                        await AuthProvider.updateUser('1xorAjA7hRZfOdN3zpkAWI7spgp1',_birthDateInString,genderSelected, roleSelected);
                                        _formKey.currentState.save();
                                        Navigator.of(context).pop();
                                      }
                                    },
                                  ),
                                )

代码未来updateUser:

代码语言:javascript
运行
复制
Future <void> updateUser(String id,String birthday, String gender, String role, )async{
    return await FirebaseFirestore.instance
        .collection('admins')
        .doc(id)
        .update({'username': usernameController, 'email': emailController, 'first name': firstNameController, 'last name': lastNameController, 'birthday': birthday, 'gender': gender, 'role': role,})
        .then((value) => print("User Updated"))
        .catchError((error) => print("Failed to update user: $error"));
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 06:37:25

您正在尝试访问类内的方法,而不为类创建实例。因此,您需要将函数创建为静态方法,或者您可以创建类的实例并访问它。

将方法更改为静态的。

代码语言:javascript
运行
复制
class AuthProvider {
static Future <void> updateUser(String id,String birthday, String gender, String role, )async{
    return await Firebase......
  }
}

或者创建类的实例。

代码语言:javascript
运行
复制
if (_formKey.currentState.validate()) {
    AuthProvider newObj = AuthProvider();
    await newObj.updateUser('','','','');
    // or simply await AuthProvider().updateUser('','','','');
}

如果仅限于上述方法,请尝试为类创建构造函数并像第二个方法一样访问它。

类:

代码语言:javascript
运行
复制
class AuthProvider {
        AuthProvier();
        static Future <void> updateUser(String id,String birthday, String gender, String role, )async{
           return await Firebase......
        }
     }

活动:

代码语言:javascript
运行
复制
if (_formKey.currentState.validate()) {
    AuthProvider newObj = AuthProvider();
    await newObj.updateUser('','','','');
    // or simply await AuthProvider().updateUser('','','','');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72518104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档