1
resposta

Problema com persistência no Hive.

Olá, sou novo no Dart/Flutter gostaria de pegar o dado da API e colocar dentro do Hive.box como uma espécie de Local Storage. Eu já consegui trazer os dados da API e fazer o 'put' no Hive, entretanto, eu não estou conseguindo persistir ele em outras paginas. Após o reload, todos os dados são apagados do banco e ele retorna nulo.

Segue os codigos abaixo para melhor entendimento:

Main.dart - Open the box

Future _abrirCaixa() async {
  var dir = await getApplicationDocumentsDirectory();
  Hive.init(dir.path);
  return await Hive.openBox('localStorage');
}

void main() {
  _abrirCaixa();
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: MyApp(),
  ));
}

RaisedButton no Login.dart

Padding(
                padding: const EdgeInsets.only(top: 16.0),
                child: ButtonTheme(
                  height: 40.0,
                  child: RaisedButton(
                    onPressed: () async {
                      if (controladorUsuario.text.isEmpty ||
                          controladorSenha.text.isEmpty) {
                        camposVazios.camposVazios(context);
                      } else {
                        await fazerLogin(context);
                        infoAddADM();
                        infoAddCond();
                      }
                    },


                    child: Text(
                      "Conectar",
                      style: TextStyle(color: white),
                    ),
                    color: mainColor,
                  ),
                ),
              ),

fazerLogin() => na sessionValidation eu coloco todos os valores recebidos da API no Hive

[...]
 var dados = await Session.sessionValidation(login, senha);

    print('------------------------------');
    print(localStorage.values.toString());
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => TestePage(),
      ),
    );
[...]

TestPage.dart

class _TestePageState extends State<TestePage> {
  @override
  Widget build(BuildContext context) {
    print('--------------//---------------------');
    print(localStorage.values.toString());

    return Container();
  }
}

O que retorna pra mim:

Na primeira vez:

I/flutter (14463): ------------------------------
I/flutter (14463): (3, Adm ConectCon, 53644, 4, 0, Condomínio SID, 509, 140, ..., null, 90377)
I/flutter (14463): --------------//---------------------
I/flutter (14463): (3, Adm ConectCon, 53644, 4, 0, Condomínio SID, 509, 140, ..., null, 90377)

depois do hot reload:

I/flutter (14463): --------------//---------------------
I/flut``ter (14463): ()
1 resposta

Olá, tudo bem ?

Vi que sua dúvida foi aberta já tem um tempo :(

Será que conseguiu resolver ? :D

Se sim compartilha conosco como fez!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software