在我的应用程序中,我有AddServerScreen
Page,它允许我将服务器添加到 Cubit。服务器对象有两个属性,别名和地址。如果要添加的服务器的别名与保存在 Cubit 中的服务器之一匹配,我不会添加服务器并向用户显示错误消息。但如果尚未添加,我将服务器添加到 Cubit 并返回主页。
我的问题是,Cubit 应该在此处进行验证Navigator.pop(context)
吗?如果我在 UI 中执行所有这些操作,Cubit 将不得不Future
从函数返回,这感觉不对。我需要以正确的方式解决这个问题。
ServerState
我将在下面分享简化版ServerCubit
。
服务器状态:
class ServerState {
final List<Server> servers;
const ServerState(this.servers);
}
服务器尺码:
class ServerCubit extends Cubit<ServerState> {
ServerCubit() : super(const ServerState([]));
void addServer(String address, String alias) {
List<Server> same = state.servers.where((e) => e.alias == alias).toList();
if (same.isEmpty) {
Server server = Server(address, alias);
emit(ServerState([...state.servers, server]));
}
}
}