问题描述
我是飞镖新手。我需要获取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的错误。