forked from cubetiq/cubetiq_dart_shared
Add base model
This commit is contained in:
parent
3b2abdc030
commit
a472156d22
@ -1,16 +1,14 @@
|
|||||||
import 'dart:convert';
|
import 'package:cubetiq/model.dart';
|
||||||
|
|
||||||
import 'package:cubetiq/interfaces.dart';
|
|
||||||
|
|
||||||
void main(List<String> args) {
|
void main(List<String> args) {
|
||||||
MyCart.addCart(
|
MyCart.addCart(
|
||||||
Cart(1, 'Apple', 1),
|
Cart(id: 1, name: 'Apple', qty: 1),
|
||||||
);
|
);
|
||||||
|
|
||||||
MyCart.show();
|
MyCart.show();
|
||||||
|
|
||||||
MyCart.addCart(
|
MyCart.addCart(
|
||||||
Cart(1, 'Apple', 2),
|
Cart(id: 1, name: 'Apple', qty: 2),
|
||||||
);
|
);
|
||||||
|
|
||||||
MyCart.show();
|
MyCart.show();
|
||||||
@ -24,15 +22,24 @@ void main(List<String> args) {
|
|||||||
MyCart.show();
|
MyCart.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
class Cart implements ToJson {
|
class Cart extends BaseModel<Cart> {
|
||||||
final int id;
|
final int id;
|
||||||
final String name;
|
final String? name;
|
||||||
double qty;
|
double qty;
|
||||||
|
|
||||||
Cart(this.id, this.name, this.qty);
|
Cart({this.id = -1, this.name, this.qty = 0});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Map toJson() {
|
Cart fromMap(Map<String, dynamic> map) {
|
||||||
|
return Cart(
|
||||||
|
id: map['id'],
|
||||||
|
name: map['name'],
|
||||||
|
qty: map['qty'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, dynamic> toMap() {
|
||||||
return {
|
return {
|
||||||
'id': id,
|
'id': id,
|
||||||
'name': name,
|
'name': name,
|
||||||
@ -71,7 +78,14 @@ class MyCart {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void show() {
|
static void show() {
|
||||||
var data = carts.map((key, value) => MapEntry(key, jsonEncode(value)));
|
var data = carts.map((key, value) => MapEntry(key, value));
|
||||||
|
var json = data.map((key, value) => MapEntry(key, value.toJson()));
|
||||||
|
var model = json.map((key, value) => MapEntry(key, Cart().fromJson(value)));
|
||||||
|
print('================ Map =================');
|
||||||
print('$data');
|
print('$data');
|
||||||
|
print('================ Json =================');
|
||||||
|
print('$json');
|
||||||
|
print('================ Model =================');
|
||||||
|
print('$model');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
lib/model.dart
Normal file
3
lib/model.dart
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
library model;
|
||||||
|
|
||||||
|
export 'src/model/base.dart';
|
33
lib/src/model/base.dart
Normal file
33
lib/src/model/base.dart
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
abstract class BaseModel<T> {
|
||||||
|
BaseModel();
|
||||||
|
|
||||||
|
Map<String, dynamic> toMap();
|
||||||
|
|
||||||
|
T fromMap(Map<String, dynamic> map);
|
||||||
|
|
||||||
|
T fromJson(String json) {
|
||||||
|
return fromMap(decode(json));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return toMap().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
if (identical(this, other)) return true;
|
||||||
|
|
||||||
|
return other is BaseModel && other.toMap() == toMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => toMap().hashCode;
|
||||||
|
|
||||||
|
String toJson() => encode(toMap());
|
||||||
|
|
||||||
|
dynamic decode(String json) => jsonDecode(json);
|
||||||
|
String encode(dynamic json) => jsonEncode(json);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user