因此,我尝试通过创建一个新类型的“Empresario”对象或查找现有对象来访问 empresario 的个人资料来启动我的应用程序。
empresario 对象有一个“Empresa”对象列表,当该列表为空时,应用程序运行良好,直到我向列表中添加了一个对象,现在每次尝试访问“Empresario”时都会收到此错误盒子:
HiveError (HiveError: To use this list, you have to open the box "empresas" first.)
我也尝试打开盒子 empresas,但即使那条线也失败了。
对象的结构:
import 'package:hive/hive.dart';
import 'package:apiary/objetos/empresa.dart';
part 'empresario.g.dart';
@HiveType(typeId: 0)
class Empresario extends HiveObject {
@HiveField(0)
final String id;
@HiveField(1)
final String? nombre;
@HiveField(2)
final String correo;
@HiveField(3)
final String password;
@HiveField(4)
final String? telefono;
@HiveField(5)
final String? foto;
@HiveField(6)
List<Empresa>? empresas;
Empresario({
this.id = '',
this.nombre,
required this.correo,
required this.password,
this.telefono,
this.foto,
this.empresas,
});
}
这些是应用程序停止的方法:
Future<void> saveEmpresario(Empresario empresario) async {
final Box<Empresario> empresarios =
await Hive.openBox<Empresario>('empresarios');
empresarios.add(empresario);
}
Future<Empresario?> findEmpresarioByCredentials(
String correo, String password) async {
final Box<Empresario> empresarios =
await Hive.openBox<Empresario>('empresarios');
final empresario = empresarios.values.firstWhereOrNull(
(empresario) =>
empresario.correo == correo && empresario.password == password,
);
return empresario;
}
两种方法都停止于
final Box<Empresario> empresarios = await Hive.openBox<Empresario>('empresarios');
您需要在 main.dart 中打开一个框,如下所示:
late Box box;
void main() async {
await init();
runApp(MyApp());
}
Future init() async {
await initHive();
}
Future initHive() async {
await Hive.initFlutter();
box = await Hive.openBox('box');
}