-
Notifications
You must be signed in to change notification settings - Fork 0
/
list_advance.dart
162 lines (142 loc) · 5.22 KB
/
list_advance.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
void main() {
final model = CarModel(
category: CarModels.bmw, name: 'bmw x5', money: 123, isSecondHand: false);
final carItems = [
CarModel(
category: CarModels.bmw,
name: 'bmw x5',
money: 123,
isSecondHand: false),
CarModel(category: CarModels.toyota, name: 'yaris', money: 456),
CarModel(
category: CarModels.yamaha,
name: 'yamaha nmax',
money: 13323,
isSecondHand: false),
CarModel(category: CarModels.bmw, name: 'bmw x1', money: 125673),
CarModel(
category: CarModels.toyota,
name: 'corolla',
money: 12903,
isSecondHand: false)
];
//final resultCount = carItems.any((element) => element.isSecondHand == true); // any içerisinde buna uyan var mı? element içerisindeki elemanlar a bakar .
// (element) => element.isSecondHand == true -> caritem ın içeisinde 2.el var mı? olanları bana geri döndürür
// ama bize kaç tane var o lazım. kodu düzenleyip where kullanmalıyız.
final resultCount = carItems
.where((element) => element.isSecondHand == true)
.length; // bu carItems ın içinde 2.el varmı kontrol eder ve kaç tane var sa döndürür.
print(resultCount);
final newCar =
CarModel(category: CarModels.bmw, name: 'bmw x1', money: 125673);
final isHaveCar = carItems.contains(newCar);
if (isHaveCar) {
print('elimizde var');
} else {
print('elimizde yok alalım');
}
final resultBmwMore20 = carItems.where((element) {
return element.category == CarModels.bmw && element.money > 20;
}).join(); // join dediğimizde toString metodunu basyor. çıktısı : Instance of 'CarModel'Instance of 'CarModel'
// @override toString yaparak return nünü $name - $ money yapıp join ile ekranda name ve money gelecektir.
print(resultBmwMore20);
final carNames = carItems // map yapmak demek bundan yeni object üretmek demek
.map((e) => e.name)
.join(
','); // e nin içindeki name lere göre yeni bir nesne oluşturuyorum.
print(carNames);
try {
// dene sonuç geliyorsa mercedesCar ın name ni bastır
final mercedesCar = carItems.singleWhere((element) =>
element.category ==
CarModels.mercedes); // singleWhere 1 tane varsa yeter
print(mercedesCar.name);
} catch (e) {
print('mercedes araba yok abi');
} finally {
print('olmadı galiba'); // finally her türlü senaryoda çalışır
}
final index = carItems.indexOf(newCar); // newCar ın index numarasını bulur
print(index); // 3
final _mercedes =
CarModel(category: CarModels.mercedes, name: 'e200', money: 123);
carItems.add(_mercedes); // carItems a yeni araba ekliyoruz
carItems.sort((first, second) =>
first.money.compareTo(second.money)); // küçükten büyüğe doğru
carItems.sort((first, second) =>
second.money.compareTo(first.money)); // büyükten küçüğe doğru
print(carItems);
final users = carItems.expand((element) => element.users).toList();
calculateToUser(carItems);
carItems.remove(_mercedes);
carItems.removeWhere(
(element) => element.category == CarModels.bmw || element.money < 30);
print(carItems);
}
void calculateToUser(List<CarModel> items) {
// itemleri düzelt bmw olanları yamaha yap
final newItems = items.map((CarModel e) {
if (e.category == CarModels.bmw) {
e.category = CarModels.yamaha;
}
if (e.isSecondHand) {
e.isSecondHand = false;
}
return e;
}).toList();
print(newItems);
}
//benim bir arabalar sınıfım olavak
// arabaların modeli, ismi, parası kesin olarak şehri olmayacak, ikinci el durumu eğer müşteri söylemezse
// her ürün ikinci el kabul edilecek
// benim 5 tene arabam olcak
// benim bu arabalarımın kaç tanesi 2. el
// yeni bir araba geldi bu bizde var mı?
// bana bmw olan ve money si 20 den büyük olan arabaların ismini söyler misin
// acaba sadece isimleri yan yana gösterebilir misin
// benim elinde mercedes var mı
// yeni gelen arabaya var demiştin. kaçıncı sırada
// ben yeni mercedes araba aldım ekler misin
// bana arabaları küçükten büyüğe göre sıralar mısın
// son ekleneni silelim
// bmw olan ve 30 da düşük olanı silelim.
class CarModel {
CarModels category;
final String name;
final double money;
String? city;
List<User> users;
bool isSecondHand;
CarModel({
this.users = const [],
required this.category,
required this.name,
required this.money,
this.city,
this.isSecondHand = true,
});
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is CarModel &&
other.category == category &&
other.name == name &&
other.money == money &&
other.city == city &&
other.isSecondHand == isSecondHand;
}
@override
int get hashCode {
return category.hashCode ^
name.hashCode ^
money.hashCode ^
city.hashCode ^
isSecondHand.hashCode;
}
@override
String toString() {
return '$name - $money';
}
}
class User {}
enum CarModels { bmw, yamaha, toyota, mercedes }