Showing
1 changed file
with
44 additions
and
50 deletions
| @@ -217,81 +217,75 @@ class RxBool extends _RxImpl<bool> { | @@ -217,81 +217,75 @@ class RxBool extends _RxImpl<bool> { | ||
| 217 | } | 217 | } | 
| 218 | } | 218 | } | 
| 219 | 219 | ||
| 220 | -/// Base Rx class for `num` Types (`double` and `int`) as mostly share the same | ||
| 221 | -/// operator overload, we centralize the common code here. | ||
| 222 | -abstract class _BaseRxNum<T> extends _RxImpl<num> { | ||
| 223 | - _BaseRxNum operator +(num val) { | ||
| 224 | - subject.add(_value += val); | ||
| 225 | - return this; | ||
| 226 | - } | ||
| 227 | - | ||
| 228 | - _BaseRxNum operator -(num val) { | ||
| 229 | - subject.add(_value -= val); | ||
| 230 | - return this; | ||
| 231 | - } | ||
| 232 | - | ||
| 233 | - _BaseRxNum operator /(num val) { | ||
| 234 | - subject.add(_value /= val); | ||
| 235 | - return this; | ||
| 236 | - } | ||
| 237 | - | ||
| 238 | - _BaseRxNum operator *(num val) { | ||
| 239 | - subject.add(_value *= val); | ||
| 240 | - return this; | ||
| 241 | - } | 220 | +/// Rx class for `num` Types (`double` and `int`) shared comparison operations | 
| 221 | +abstract class _RxNumComparators<T extends num> extends _RxImpl<T> { | ||
| 222 | + bool operator <=(T other) => _value <= other; | ||
| 242 | 223 | ||
| 243 | - _BaseRxNum operator ~/(num val) { | ||
| 244 | - subject.add(_value ~/ val); | ||
| 245 | - return this; | ||
| 246 | - } | 224 | + bool operator >=(T other) => _value >= other; | 
| 247 | 225 | ||
| 248 | - _BaseRxNum operator %(num val) { | ||
| 249 | - subject.add(_value % val); | ||
| 250 | - return this; | ||
| 251 | - } | 226 | + bool operator <(T other) => _value < other; | 
| 252 | 227 | ||
| 253 | - bool operator <=(num other) => _value <= other; | ||
| 254 | - bool operator >=(num other) => _value >= other; | ||
| 255 | - bool operator <(num other) => _value < other; | ||
| 256 | - bool operator >(num other) => _value > other; | 228 | + bool operator >(T other) => _value > other; | 
| 257 | } | 229 | } | 
| 258 | 230 | ||
| 259 | /// Rx class for `double` Type. | 231 | /// Rx class for `double` Type. | 
| 260 | -class RxDouble extends _BaseRxNum<double> { | 232 | +class RxDouble extends _RxNumComparators<double> { | 
| 261 | RxDouble([double initial]) { | 233 | RxDouble([double initial]) { | 
| 262 | _value = initial; | 234 | _value = initial; | 
| 263 | } | 235 | } | 
| 236 | + | ||
| 237 | + double operator *(double val) => _value * val; | ||
| 238 | + | ||
| 239 | + double operator -(double val) => _value - val; | ||
| 240 | + | ||
| 241 | + double operator +(double val) => _value + val; | ||
| 242 | + | ||
| 243 | + double operator /(double val) => _value / val; | ||
| 244 | + | ||
| 245 | + double operator %(double val) => _value % val; | ||
| 264 | } | 246 | } | 
| 265 | 247 | ||
| 266 | /// Rx class for `num` Type. | 248 | /// Rx class for `num` Type. | 
| 267 | -class RxNum extends _BaseRxNum<num> { | 249 | +class RxNum extends _RxNumComparators<num> { | 
| 268 | RxNum([num initial]) { | 250 | RxNum([num initial]) { | 
| 269 | _value = initial; | 251 | _value = initial; | 
| 270 | } | 252 | } | 
| 253 | + | ||
| 254 | + num operator *(num val) => _value * val; | ||
| 255 | + | ||
| 256 | + num operator -(num val) => _value - val; | ||
| 257 | + | ||
| 258 | + num operator +(num val) => _value + val; | ||
| 259 | + | ||
| 260 | + num operator /(num val) => _value / val; | ||
| 261 | + | ||
| 262 | + num operator %(num val) => _value % val; | ||
| 271 | } | 263 | } | 
| 272 | 264 | ||
| 273 | -/// Rx class for `String` Type. | ||
| 274 | -class RxString extends _RxImpl<String> { | ||
| 275 | - RxString([String initial]) { | 265 | +/// Rx class for `int` Type. | 
| 266 | +class RxInt extends _RxNumComparators<int> { | ||
| 267 | + RxInt([int initial]) { | ||
| 276 | _value = initial; | 268 | _value = initial; | 
| 277 | } | 269 | } | 
| 278 | 270 | ||
| 279 | - RxString operator +(String val) { | ||
| 280 | - subject.add(_value += val); | ||
| 281 | - return this; | ||
| 282 | - } | 271 | + int operator %(int val) => _value % val; | 
| 283 | 272 | ||
| 284 | - RxString operator *(int val) { | ||
| 285 | - subject.add(_value *= val); | ||
| 286 | - return this; | ||
| 287 | - } | 273 | + int operator *(int val) => _value * val; | 
| 274 | + | ||
| 275 | + int operator -(int val) => _value - val; | ||
| 276 | + | ||
| 277 | + int operator +(int val) => _value + val; | ||
| 278 | + | ||
| 279 | + double operator /(int val) => _value / val; | ||
| 288 | } | 280 | } | 
| 289 | 281 | ||
| 290 | -/// Rx class for `int` Type. | ||
| 291 | -class RxInt extends _BaseRxNum<int> { | ||
| 292 | - RxInt([int initial]) { | 282 | +/// Rx class for `String` Type. | 
| 283 | +class RxString extends _RxImpl<String> { | ||
| 284 | + RxString([String initial]) { | ||
| 293 | _value = initial; | 285 | _value = initial; | 
| 294 | } | 286 | } | 
| 287 | + | ||
| 288 | + String operator +(String val) => _value + val; | ||
| 295 | } | 289 | } | 
| 296 | 290 | ||
| 297 | /// Foundation class used for custom `Types` outside the common native Dart | 291 | /// Foundation class used for custom `Types` outside the common native Dart | 
- 
Please register or login to post a comment