flutter_secure_storage icon indicating copy to clipboard operation
flutter_secure_storage copied to clipboard

Exception has occurred. PlatformException (PlatformException(Exception encountered: UNKNOWN_ERROR, write, null, null))

Open insinfo opened this issue 2 years ago • 1 comments

i'm getting this error when trying to store a large object on Windows

class Usuario implements ModelBase {
  @override
  String getClassName() {
    return 'Usuario';
  }

  Usuario({
    this.id,
    required this.username,
    required this.password,
  });

  Usuario.fromMap(Map<String, dynamic> map) {
    id = map.containsKey('id') ? map['id'] : id;
    username = map.containsKey('username') ? map['username'] : username;
    password = map.containsKey('password') ? map['password'] : password;
    ativo = map.containsKey('ativo') ? map['ativo'] : ativo;
    idPerfil = map.containsKey('idPerfil') ? map['idPerfil'] : idPerfil;
    idPessoa = map.containsKey('idPessoa') ? map['idPessoa'] : idPessoa;
    dataCadastroAsString = map.containsKey('dataCadastro')
        ? map['dataCadastro']
        : dataCadastroAsString;

    if (map.containsKey('perfil')) {
      if (map['perfil'] is Map<String, dynamic>) {
        perfil = Perfil.fromMap(map['perfil'] as Map<String, dynamic>);
      }
    }
    if (map.containsKey('pessoa')) {
      if (map['pessoa'] is Map<String, dynamic>) {
        pessoa = Pessoa.fromMap(map['pessoa'] as Map<String, dynamic>);
      }
    }
    if (map.containsKey('accessToken')) {
      accessToken = map['accessToken'];
    }
    if (map.containsKey('expiresIn')) {
      expiresIn = DateTime.parse(map['expiresIn']);
    }

    if (map.containsKey('usuarioJubarte')) {
      usuarioJubarte = UsuarioJubarte.fromMap(map['usuarioJubarte']);
    }
  }

  int? id;
  late String username;
  String? password;
  bool ativo = true;
  int? idPerfil;
  int? idPessoa;
  DateTime? dataCadastro;
  String? accessToken;
  DateTime? expiresIn;
  UsuarioJubarte? usuarioJubarte;

  String get dataCadastroAsString {
    final dt = dataCadastro != null
        ? dataCadastro!.toIso8601String().substring(0, 10)
        : '';
    return dt;
  }

  set dataCadastroAsString(dynamic value) {
    if (value is DateTime) {
      dataCadastro = value;
    } else if (value is String) {
      dataCadastro = DateTime.tryParse(value);
    }
  }

  Perfil? _perfil;
  Pessoa? _pessoa;

  Pessoa? get pessoa {
    return _pessoa;
  }

  set pessoa(Pessoa? p) {
    _pessoa = p;
    idPessoa = p?.id;
  }

  Perfil? get perfil {
    return _perfil;
  }

  set perfil(Perfil? p) {
    _perfil = p;
    idPerfil = p?.id;
  }

  static const String ID_KEY = 'id';
  static const String USERNAME_KEY = 'username';
  static const String PASSWORD_KEY = 'password';
  static const String ATIVO_KEY = 'ativo';
  static const String ID_PERFIL_KEY = 'idPerfil';
  static const String ID_PESSOA_KEY = 'idPessoa';
  static const String DATA_CADASTRO_KEY = 'dataCadastro';

  @override
  List<String> fillable = [
    USERNAME_KEY,
    PASSWORD_KEY,
    ATIVO_KEY,
    ID_PERFIL_KEY,
    ID_PESSOA_KEY,
    DATA_CADASTRO_KEY,
  ];

  @override
  Map<String, dynamic> toMap() {
    final map = <String, dynamic>{};
    if (id != null) {
      map['id'] = id;
    }
    map['username'] = username;
    map['password'] = password;
    map['ativo'] = ativo;
    map['idPerfil'] = idPerfil;
    map['idPessoa'] = idPessoa;
    map['dataCadastro'] = dataCadastro?.toString();

    if (perfil != null) {
      map['perfil'] = perfil!.toMap();
    }
    if (pessoa != null) {
      map['pessoa'] = pessoa!.toMap();
    }

    map['accessToken'] = accessToken;
    map['expiresIn'] = expiresIn.toString();

    if (usuarioJubarte != null) {
      map['usuarioJubarte'] = usuarioJubarte!.toMap();
    }

    return map;
  }

  @override
  Map<String, dynamic> toInsert() {
    var map = toMap();
    map.remove('perfil');
    map.remove('pessoa');
    return map;
  }

  @override
  String get tableName => 'usuarios';

  @override
  void validate() {
    if (!CoreUtils.isNotNullOrEmpty(username)) {
      throw Exception('Nome de usuário não pode ser vazio!');
    }

    if (!CoreUtils.isNotNullOrEmpty(password)) {
      throw Exception('Senha não pode ser vazia!');
    }
  }
}

 Future<void> persistUser(Usuario usuario) async {  
    await _storage.write(key: _key, value: jsonEncode(usuario.toMap()));
    return;
  }
class UsuarioJubarte implements ModelBase {
  late int idPessoa;
  late String nome;
  int? idOrganograma;
  String? secretaria;
  String? sigla;
  late String login;
  String? imagem;
  bool isGuarda = false;
  late DateTime dataNascimento;
  String? grupoSanguineo;
  String? fatorRH;
  late String sexo;
  late String cpf;
  late String rg;
  String? nomeMae;
  String? nomePai;
  String? matricula;
  DateTime? dataAdmissao;
  String? nacionalidade;

  late String emailPrincipal;
  String? cargo;
  String? profissao;
  DateTime? dataExoneracao;
  bool? ativo;
  String? vinculo;
  String? funcaoGratificada;
  List<Map<String, dynamic>> modulosJubarte = <Map<String, dynamic>>[];

  UsuarioJubarte({
    required this.idPessoa,
    required this.nome,
    this.idOrganograma,
    this.secretaria,
    this.sigla,
    required this.login,
    this.imagem,
    required this.isGuarda,
    required this.dataNascimento,
    this.grupoSanguineo,
    this.fatorRH,
    required this.sexo,
    required this.cpf,
    required this.rg,
    this.nomeMae,
    this.nomePai,
    this.matricula,
    this.dataAdmissao,
    this.nacionalidade,
    required this.emailPrincipal,
    this.cargo,
    this.profissao,
    this.dataExoneracao,
    this.ativo,
    this.vinculo,
    this.funcaoGratificada,
  });

  UsuarioJubarte.fromMap(Map<String, dynamic> json) {
    idPessoa = json['idPessoa'];
    nome = json['nome'];
    idOrganograma = json['idOrganograma'];
    secretaria = json['secretaria'];
    sigla = json['sigla'];
    login = json['login'];
    imagem = json['imagem'];
    isGuarda = json['isGuarda'];

    dataNascimento = json['dataNascimento'] is DateTime
        ? json['dataNascimento']
        : DateTime.parse(json['dataNascimento']);

    grupoSanguineo = json['grupoSanguineo'];
    fatorRH = json['fatorRH'];
    sexo = json['sexo'];
    cpf = json['cpf'];
    rg = json['rg'];
    nomeMae = json['nomeMae'];
    nomePai = json['nomePai'];
    matricula = json['matricula'];

    dataAdmissao = json['dataAdmissao'] is DateTime
        ? json['dataAdmissao']
        : DateTime.tryParse(json['dataAdmissao']);

    nacionalidade = json['nacionalidade'];
    //novos
    emailPrincipal = json['emailPrincipal'];
    cargo = json['cargo'];
    profissao = json['profissao'];
    dataExoneracao = json['dataExoneracao'] is DateTime
        ? json['dataExoneracao']
        : DateTime.tryParse(json['dataExoneracao'].toString());
    ativo = json['ativo'];
    vinculo = json['vinculo'];
    funcaoGratificada = json['funcaoGratificada'];
    if (json.containsKey('modulosJubarte') && json['modulosJubarte'] != null) {
      var mjs = json['modulosJubarte'] as List;
      mjs.forEach((element) {
        modulosJubarte.add(element as Map<String, dynamic>);
      });
    }
  }

  @override
  Map<String, dynamic> toMap() {
    final data = <String, dynamic>{};
    data['idPessoa'] = idPessoa;
    data['nome'] = nome;
    data['idOrganograma'] = idOrganograma;
    data['secretaria'] = secretaria;
    data['sigla'] = sigla;
    data['login'] = login;
    data['imagem'] = imagem;
    data['isGuarda'] = isGuarda;
    data['dataNascimento'] = dataNascimento.toString();
    data['grupoSanguineo'] = grupoSanguineo;
    data['fatorRH'] = fatorRH;
    data['sexo'] = sexo;
    data['cpf'] = cpf;
    data['rg'] = rg;
    data['nomeMae'] = nomeMae;
    data['nomePai'] = nomePai;
    data['matricula'] = matricula;
    data['dataAdmissao'] = dataAdmissao.toString();
    data['nacionalidade'] = nacionalidade;
    //novos
    data['emailPrincipal'] = emailPrincipal;
    data['cargo'] = cargo;
    data['profissao'] = profissao;
    data['dataExoneracao'] = dataExoneracao.toString();
    data['ativo'] = ativo;
    data['vinculo'] = vinculo;
    data['funcaoGratificada'] = funcaoGratificada;

    if (modulosJubarte.isNotEmpty) {
      data['modulosJubarte'] = modulosJubarte;
    }
    return data;
  }

  @override
  List<String> fillable = [];

  @override
  String getClassName() {
    return 'UsuarioJubarte';
  }

  @override
  String get tableName => throw UnimplementedError();

  @override
  Map<String, dynamic> toInsert() {
    throw UnimplementedError();
  }

  @override
  void validate() {
    throw UnimplementedError();
  }

  String get filiacaoFormatado {
    if (nomeMae == null) {
      return '';
    }
    return '$nomeMae \r\n$nomePai';
  }

  String get info {
    return '''
Identidade Funcional - Fé Pública Válido em todo o Território Nacional Lei Federal Nº 13.022 de 08/08/2014 Integrante Operacional do Sistema Único de Segurança Pública nos Termos do Art. 9º §2º Inc. VII da Lei Federal Nº 13.675/2018 Decreto Municipal Nº 2476/2020\r\n
  ''';
  }

  String get sangueFormatado {
    if (grupoSanguineo == null) {
      return '';
    }
    var f = fatorRH?.trim() == 'Positivo' ? '+' : '-';
    return '$grupoSanguineo$f';
  }

  String get matriculaFormatada {
    if (matricula == null) {
      return '';
    }

    return matricula!;
  }

  String get dataNascimentoFormatado {
    if (grupoSanguineo == null) {
      return '';
    }
    var format = DateFormat('dd/MM/yyyy');
    return format.format(dataNascimento);
  }

  String get dataDeAdmissao {
    if (dataAdmissao == null) {
      return '';
    }
    var format = DateFormat('dd/MM/yyyy');
    return format.format(dataAdmissao!);
  }
}

insinfo avatar Feb 02 '22 22:02 insinfo

Duplicate of #345

Jon-Salmon avatar Feb 04 '22 00:02 Jon-Salmon