与changeNotifierProvider的摇摆蜂巢
因此,我想使用Hive将笔记存储在日历应用程序中,但是我在一起实施Hive和ChangeNotifierProvider的过程中很努力。如果有人想知道该怎么做。
这是我到目前为止的代码:
@HiveType(typeId: 0)
class EventsBox extends HiveObject {
EventsBox({required this.date, required this.eventsList});
@HiveField(0)
DateTime date;
@HiveField(1)
List<CleanCalendarEvent> eventsList;
}
这是需要的未来提供者:
final hiveProvider = FutureProvider<HiveDB>((_) => HiveDB.create());
class HiveDB {
var _events;
HiveDB._create() {}
static Future<HiveDB> create() async {
final component = HiveDB._create();
await component._init();
return component;
}
_init() async {
Hive.registerAdapter(EventsBoxAdapter());
this._events = await Hive.openBox<EventsBox>('events');
}
storeEvent(EventsBox eventsMap) {
this._events.put('events', eventsMap);
}
EventsBox getEvents() {
return this._events.get('events');
}
}
我想使用changeNotifierProvider而不是FutureProvider
So I wanted to use Hive for storing notes in a Calendar app but I am stuggling so much with implementing Hive and a ChangeNotifierProvider together . If anyone has an idea on what to do I would like to see it.
Here is my code until now :
@HiveType(typeId: 0)
class EventsBox extends HiveObject {
EventsBox({required this.date, required this.eventsList});
@HiveField(0)
DateTime date;
@HiveField(1)
List<CleanCalendarEvent> eventsList;
}
And here is the FutureProvider that is needed :
final hiveProvider = FutureProvider<HiveDB>((_) => HiveDB.create());
class HiveDB {
var _events;
HiveDB._create() {}
static Future<HiveDB> create() async {
final component = HiveDB._create();
await component._init();
return component;
}
_init() async {
Hive.registerAdapter(EventsBoxAdapter());
this._events = await Hive.openBox<EventsBox>('events');
}
storeEvent(EventsBox eventsMap) {
this._events.put('events', eventsMap);
}
EventsBox getEvents() {
return this._events.get('events');
}
}
I want to use ChangeNotifierProvider and not FutureProvider
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
提供商框架的目标是在不始终重新创建它们的情况下将依赖项注入您的应用程序。在您的示例中,您拥有
hivesb
类,它是您要注入应用程序的内容,以供其他各种小部件使用它。IMO,“提供”依赖关系的一般方法是:
main()
函数中)your 在提供商的情况下,您
提供商&lt; distionencyClass&gt; .of(context)
在应用程序中需要的任何地方访问依赖项。让我们看看这是如何应用于您的代码的:
1。设置Hive模型和HivesB
lib/models/event_box.dart
lib/models/hive_db.dart
2。为您的
HIVEDB
实例lib/models/hive_db_provider.dart
3。创建 3。创建hivedb instaceb in
main(main()
lib lib /main.dart
4。使用提供商
lib/main.dart
5。访问“提供”实例
提供者
在您的应用程序中的任何位置code> lib/pages/some_screen.dart
结论
样本使用“ nofollow noreferrer”>提供者软件包使用提供商的用法在颤音中使用。
The goal of the provider framework is to inject dependencies into your app without recreating them all the time. In your example, you have your
HiveDB
class which is what you want to inject into your app for various other widgets to use it.IMO, the general approach of "providing" dependencies is:
main()
function)MaterialApp
with the providerProvider<DependencyClass>.of(context)
to access your dependency wherever you need it in your app.Let's see how this applies to your code:
1. Setup your Hive models and HiveDB
lib/models/event_box.dart
lib/models/hive_db.dart
2. Create a provider for your
HiveDB
instancelib/models/hive_db_provider.dart
3. Create HiveDB instance in
main()
lib/main.dart
4. Inject the HiveDB instance using the provider
lib/main.dart
5. Access "provided" instance using
Provider
anywhere in your applib/pages/some_screen.dart
Conclusion
The sample uses the Provider package which simplifies using provider usage in Flutter.