如何解决带有提供程序的单个模型不是列表的 CRUD 方法
如何为不是 Flutter 的 Provider
列表的单个模型定义方法(函数)?例如,我为一个列表的模型创建了 4 个函数:
List<User> _userList = [];
List<User> get userList => _userList;
//method for getiing and setting the list of users
setUserList(List<User> list) {
_userList = list;
notifyListeners();
}
// method for removing a single user
deleteUser(User list) {
_userList.remove(list);
notifyListeners();
}
//adding a new user
addUser(User list) {
_userList.add(list);
notifyListeners();
}
//updating the specific user
updateUser(User user) {
_userList [_userList.indexWhere((element) => element.id == user.id)] = user;
notifyListeners();
}
当它是一个用户列表时,这些都可以正常工作(至少我认为它们在我测试它们时可以工作:D),但是当它是单个对象/项目(单个用户)而不是一个时,我如何定义这些方法列表? .add()
、remove()
是存在列表时可用的方法,但在存在单个项目时不可用。这些 CRUD 模型方法的最佳方法是什么?当它是一个列表时,'Read' 是类似的:
User get user => _user;
//method for getting the user data
setUser(User user) {
_user = user;
notifyListeners();
}
但是我如何定义 CRUD 模型的其余部分,例如为单个模型而不是列表创建(添加)、更新和删除?
解决方法
当您管理列表或单个项目时,实际上没有太大区别 - 只是您将拥有处理单个项目的方法。您没有在上面显示它,但是您应该将您的方法包装在一个维护数据的类(“服务”)中。
以下是创建和删除 User
的示例身份验证服务:
class AuthService with ChangeNotifier {
User _user;
User get user => _user;
Future<void> _authenticate(String email,String password,[String name]) async {
// This is where you authenticate or register the user,and update the state
_user = User("dummy");
return Future<void>(() {});
}
Future<void> register(String name,String email,String password) async {
return _authenticate(email,password,name);
}
Future<void> login(String email,password);
}
Future<void> logout() async {
_user = null;
notifyListeners();
return Future<void>(() {});
}
}
如果有不清楚的请在评论中提问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。