TypeConverter<T, S> class
abstract
Base class for type converters which can be applied to:
- databases
- DAOs
- entities/views
- entity/view fields
- DAO methods
- DAO method parameters
The type converter is added to the scope of the element so if you put it on a class, all methods/fields in that class will be able to use the converter.
The closest type converter wins! If you, for example, add a converter on the database level and another one on a DAO method parameter, which takes care of converting the same types, the one declared next to the DAO method parameter will be used. Please refer to the above list to get more information about the precedence of converters.
A type converter that converts between DateTime and the database compatible int type can be seen in the following example.
// definition
class DateTimeConverter extends TypeConverter<DateTime, int> {
@override
DateTime decode(int databaseValue) {
return DateTime.fromMillisecondsSinceEpoch(databaseValue);
}
@override
int encode(DateTime value) {
return value.millisecondsSinceEpoch;
}
}
// usage
@TypeConverters([DateTimeConverter])
@Database(version: 1, entities: [Order])
abstract class OrderDatabase extends FloorDatabase {
OrderDao get orderDao;
}
@entity
class Order {
@primaryKey
final int id;
final DateTime date;
Order(this.id, this.date);
}
- Annotations
-
- @experimental
Constructors
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
decode(
S databaseValue) → T -
Converts the
databaseValue
of typeS
intoT
-
encode(
T value) → S -
Converts the
value
of typeT
into the database-compatible typeS
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited