我无法将数据持久保存在HiveBox的本地存储中,当我重新加载页面时,本地数据库中的所有内容都变为空

问题描述

我是飞镖新手。我需要获取Web API的数据并将其作为LocalStorage放在Hive.Box中。我可以获取Api数据,并将其放在Hive中,但是我不能在另一个页面中保留此数据,例如,我不能在另一个页面中使用localStorage变量...问题是HiveBox返回null。

Main.dart-打开盒子

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(),));
}

Login.dart中的RaisedButton

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();
                      }
                    },// await infoAddCond();
                    // await infoAddADM();

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

fazerLogin()=>在sessionValidation中,我将所有数据放入LocalStorage

[...]
 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();
  }
}

给我什么回报:

At first: 

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

After a hot reload: 

I/Flutter (14463): --------------//---------------------
I/Flutter (14463): ()

解决方法

我对代码有些困惑,但是您可以尝试以下操作:

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

您可以进行异步处理,然后可以等待_abrirCaixa()方法的使用,这将是一个未来。这样就可以解决HiveBox为null的错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...