Comments (10)
I'll implement that π
from hive.
I think it can be implemented by using this approach but that would require a little bit of boilerplate and that would be hacky, so closing this issue. Would re-open if I got any neat solution.
from hive.
What exactly do you mean? You can store any object in a box.
from hive.
Ex, if I want a box to store only String
keys then, by using Hive.openBox<dynamc, String>('box')
compiler would allow only to write String
as value in Box.put, Box.putAt, etc
.
This could reduce bugs, and also compiler can understand the return type of Box.get(key).
from hive.
This only works with values because the add()
method implicitly stores an integer key.
So if you would open a box which only supports String keys and you use the add()
method, there will be an exception.
I'm not sure if the users expect that...
from hive.
Maybe Box<T>
in which value is T
and key is always dynamic?
from hive.
I thought about this and (afaik) it is impossible to implement this. The best example are lists: You cannot cast List<dynamic>
to List<SomeObject>
so if you open a box of type Box<List<SomeObject>>
, you expect to get a List<SomeObject>
if you call box.get('myKey')
but you actually get a List<dynamic>
.
If you have a solution for this problem, I would happily implement this feature.
from hive.
Instead of that approach we can add an anonymous function to convert List and Map such as
Hive.openBox<List<int>>('box', castToList: (l)=>l.cast<int>().toList())
in BoxImpl
T Function(List<dynamic> l) castToList;
T Function(Map<dynamic, dynamic> m) castToMap;
BoxImpl(... , {this.castToList, this.castToMap} ...) //constructor
...
T get(dynamic key, {T defaultValue}){
...
if(frame.value is List)
return castToList(frame.value);
if(frame.value is Map)
return castToMap(frame.value);
but still requires some boilerplate and a little bit confusing.
from hive.
Unfortunately cast()
only works for "one dimension". List<List<dynamic>>.cast<List<List<int>>()
will fail.
I think this is a major flaw of the language :/
from hive.
I mean they can provide a function to convert List<dynamic>
to List<T>
for that, the function can be
(list) => (l.map((l) => l.cast<int>().toList()).toList().cast<List<int>>().toList())
from hive.
Related Issues (20)
- 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 HOT 1
- 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 2
- 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
- New data written to the disk is not immediately available. HOT 1
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.