Comments (5)
Hi,
Thanks for using the library but I cannot recommend using it in production just yet.
Currently, every time a list / map / object is changed, it has to be written completely.
Now the question is how often you change the list and how big is it? If you change it 10 times per second or it is really big, this might be a problem. Otherwise you won't notice a performance hit.
Currently there are no better ways to do it and I haven't found a smart way to handle this internally. If only a part of your list changes regulary you should consider splitting the list in two parts. If you have an idea how we could store "parts of lists" in the box file, just let me know ;)
from hive.
I just published a new version of Hive which solves your problem. You can use Hive.add()
and Hive.values
to use a box as a list. Docs
from hive.
@leisim when using Box.values do you think using the map method
Box.values.map((m)=>SomeObject.fromJson(m)).toList()
for object generation is efficient enough instead of opting into the typeannotator? The only way I've side skirted the cast error of "_InternalHashMap<dynamic, dynamic> is not a subtype of Map<String, dynamic>" is by forcing a json encode/decode and then using my SomeObject.fromJson(map) method to generate the object. I don't think this is a good solution but wanted to get your input before I committed the time to go through and annotate each object and its items.
from hive.
[Update] - k, thanks to this response : flutter/flutter#16589 (comment)
I was able to dump the typecast errors and using the map method works as it should without forcing json encode/decode. Considering your .values and .toMap methods work similarly, I don't think I need any input on the efficiency of this. Thanks.
from hive.
@adriancmurray
I understand that you store multiple maps in a box and want to cast them from dynamic. There are two methods I recommend.
Say you want maps of type Map<String, String>
:
- Use the
cast()
method on your map:
box.values.map((m) => m.cast<String, String>()).toList();
- Store your data in another object and let Hive do the work:
@HiveType
class MapHolder {
@HiveField(0)
Map<String, String> data;
}
Run the type adapter generator and get maps like this:
var myMap = box.get('myMap').data;
Neither solution is perfect but unfortunately Dart is a bit lacking when it comes to use of Generics at runtime. If anyone finds out how this could be improved, I'd be happy to implement it.
from hive.
Related Issues (20)
- [CollectionBox] compact or CompactionStrategy
- Question: Read .hive files without using HiveDB functions
- Wrong Pub dev documentation
- Future of Hive/Isar HOT 2
- Github link missing in package listing on pub.dev
- Support for record types
- [Web] The "values" returned in "Box" are empty
- Fail to initialize Hive 4.0.0 for Flutter Web? HOT 1
- [Hive v4] Type mistmatch when get List<T> items.
- Unable to install on new flutter project HOT 1
- Support for enhanced enums
- Updating nested map keys
- Is the hive dead?
- Is there a way to use the map type adapter on a nested class using toJson?
- [Web] Issue with "Invalid argument(s): Invalid or corrupted pad block" in Flutter HOT 4
- Unhandled Exception: Out of Memory
- Flutter hive unit test HOT 1
- TypeId is not consistent and how to safely remove adapter
- iOS only: hive with encryption clearing database, app includes db usage in background HOT 2
- Wrong naming of hive constant global variable
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hive.