Showing
41 changed files
with
224 additions
and
284 deletions
@@ -262,7 +262,7 @@ class GetConnect extends GetConnectInterface { | @@ -262,7 +262,7 @@ class GetConnect extends GetConnectInterface { | ||
262 | }) { | 262 | }) { |
263 | _checkIfDisposed(isHttp: false); | 263 | _checkIfDisposed(isHttp: false); |
264 | 264 | ||
265 | - final _socket = GetSocket(_concatUrl(url), ping: ping); | 265 | + final _socket = GetSocket(_concatUrl(url)!, ping: ping); |
266 | sockets.add(_socket); | 266 | sockets.add(_socket); |
267 | return _socket; | 267 | return _socket; |
268 | } | 268 | } |
1 | import 'dart:async'; | 1 | import 'dart:async'; |
2 | import 'dart:convert'; | 2 | import 'dart:convert'; |
3 | -import 'package:flutter/foundation.dart'; | ||
4 | 3 | ||
5 | import '../src/certificates/certificates.dart'; | 4 | import '../src/certificates/certificates.dart'; |
6 | import '../src/exceptions/exceptions.dart'; | 5 | import '../src/exceptions/exceptions.dart'; |
@@ -38,6 +38,7 @@ class HttpRequestImpl implements HttpRequestBase { | @@ -38,6 +38,7 @@ class HttpRequestImpl implements HttpRequestBase { | ||
38 | ..responseType = 'blob' | 38 | ..responseType = 'blob' |
39 | ..withCredentials = withCredentials; | 39 | ..withCredentials = withCredentials; |
40 | request.headers.forEach(xhr.setRequestHeader); | 40 | request.headers.forEach(xhr.setRequestHeader); |
41 | + request.contentLength ?? -1; | ||
41 | 42 | ||
42 | var completer = Completer<Response<T>>(); | 43 | var completer = Completer<Response<T>>(); |
43 | xhr.onLoad.first.then((_) { | 44 | xhr.onLoad.first.then((_) { |
@@ -32,7 +32,7 @@ class HttpRequestImpl extends HttpRequestBase { | @@ -32,7 +32,7 @@ class HttpRequestImpl extends HttpRequestBase { | ||
32 | 32 | ||
33 | @override | 33 | @override |
34 | Future<Response<T>> send<T>(Request<T> request) async { | 34 | Future<Response<T>> send<T>(Request<T> request) async { |
35 | - Stream<List<int>?> stream = request.bodyBytes.asBroadcastStream(); | 35 | + var stream = request.bodyBytes.asBroadcastStream(); |
36 | //var stream = BodyBytesStream.fromBytes(requestBody ?? const []); | 36 | //var stream = BodyBytesStream.fromBytes(requestBody ?? const []); |
37 | 37 | ||
38 | try { | 38 | try { |
@@ -16,7 +16,7 @@ class MockClient extends HttpRequestBase { | @@ -16,7 +16,7 @@ class MockClient extends HttpRequestBase { | ||
16 | @override | 16 | @override |
17 | Future<Response<T>> send<T>(Request<T> request) async { | 17 | Future<Response<T>> send<T>(Request<T> request) async { |
18 | var requestBody = await request.bodyBytes.toBytes(); | 18 | var requestBody = await request.bodyBytes.toBytes(); |
19 | - var bodyBytes = BodyBytesStream.fromBytes(requestBody ?? const []); | 19 | + var bodyBytes = BodyBytesStream.fromBytes(requestBody); |
20 | 20 | ||
21 | var response = await _handler(request); | 21 | var response = await _handler(request); |
22 | 22 |
@@ -57,9 +57,7 @@ class FormData { | @@ -57,9 +57,7 @@ class FormData { | ||
57 | String _fileHeader(MapEntry<String, MultipartFile> file) { | 57 | String _fileHeader(MapEntry<String, MultipartFile> file) { |
58 | var header = | 58 | var header = |
59 | 'content-disposition: form-data; name="${browserEncode(file.key)}"'; | 59 | 'content-disposition: form-data; name="${browserEncode(file.key)}"'; |
60 | - if (file.value.filename != null) { | ||
61 | - header = '$header; filename="${browserEncode(file.value.filename)}"'; | ||
62 | - } | 60 | + header = '$header; filename="${browserEncode(file.value.filename)}"'; |
63 | header = '$header\r\n' | 61 | header = '$header\r\n' |
64 | 'content-type: ${file.value.contentType}'; | 62 | 'content-type: ${file.value.contentType}'; |
65 | return '$header\r\n\r\n'; | 63 | return '$header\r\n\r\n'; |
1 | -import 'package:flutter/foundation.dart'; | ||
2 | - | ||
3 | import '../http/stub/file_decoder_stub.dart' | 1 | import '../http/stub/file_decoder_stub.dart' |
4 | if (dart.library.html) '../http/html/file_decoder_html.dart' | 2 | if (dart.library.html) '../http/html/file_decoder_html.dart' |
5 | if (dart.library.io) '../http/io/file_decoder_io.dart'; | 3 | if (dart.library.io) '../http/io/file_decoder_io.dart'; |
@@ -3,7 +3,7 @@ import 'src/sockets_stub.dart' | @@ -3,7 +3,7 @@ import 'src/sockets_stub.dart' | ||
3 | if (dart.library.io) 'src/sockets_io.dart'; | 3 | if (dart.library.io) 'src/sockets_io.dart'; |
4 | 4 | ||
5 | class GetSocket extends BaseWebSocket { | 5 | class GetSocket extends BaseWebSocket { |
6 | - GetSocket(String? url, | 6 | + GetSocket(String url, |
7 | {Duration ping = const Duration(seconds: 5), bool allowSelfSigned = true}) | 7 | {Duration ping = const Duration(seconds: 5), bool allowSelfSigned = true}) |
8 | : super(url, ping: ping, allowSelfSigned: allowSelfSigned); | 8 | : super(url, ping: ping, allowSelfSigned: allowSelfSigned); |
9 | } | 9 | } |
@@ -54,7 +54,8 @@ class BaseWebSocket { | @@ -54,7 +54,8 @@ class BaseWebSocket { | ||
54 | return; | 54 | return; |
55 | } on SocketException catch (e) { | 55 | } on SocketException catch (e) { |
56 | connectionStatus = ConnectionStatus.closed; | 56 | connectionStatus = ConnectionStatus.closed; |
57 | - socketNotifier!.notifyError(Close(e.osError!.message, e.osError!.errorCode)); | 57 | + socketNotifier! |
58 | + .notifyError(Close(e.osError!.message, e.osError!.errorCode)); | ||
58 | return; | 59 | return; |
59 | } | 60 | } |
60 | } | 61 | } |
@@ -109,7 +109,8 @@ extension Inst on GetInterface { | @@ -109,7 +109,8 @@ extension Inst on GetInterface { | ||
109 | 109 | ||
110 | /// Checks if a Class Instance<[S]> (or [tag]) is registered in memory. | 110 | /// Checks if a Class Instance<[S]> (or [tag]) is registered in memory. |
111 | /// - [tag] optional, if you use a [tag] to register the Instance. | 111 | /// - [tag] optional, if you use a [tag] to register the Instance. |
112 | - bool isRegistered<S>({String? tag}) => GetInstance().isRegistered<S>(tag: tag); | 112 | + bool isRegistered<S>({String? tag}) => |
113 | + GetInstance().isRegistered<S>(tag: tag); | ||
113 | 114 | ||
114 | /// Checks if an Instance<[S]> (or [tag]) returned from a factory builder | 115 | /// Checks if an Instance<[S]> (or [tag]) returned from a factory builder |
115 | /// [Get.lazyPut()], is registered in memory. | 116 | /// [Get.lazyPut()], is registered in memory. |
1 | import 'dart:async'; | 1 | import 'dart:async'; |
2 | import 'dart:collection'; | 2 | import 'dart:collection'; |
3 | 3 | ||
4 | -import 'package:flutter/foundation.dart'; | ||
5 | - | ||
6 | import '../../get_core/get_core.dart'; | 4 | import '../../get_core/get_core.dart'; |
7 | 5 | ||
8 | import 'lifecycle.dart'; | 6 | import 'lifecycle.dart'; |
@@ -177,7 +175,6 @@ class GetInstance { | @@ -177,7 +175,6 @@ class GetInstance { | ||
177 | required InstanceBuilderCallback<S> builder, | 175 | required InstanceBuilderCallback<S> builder, |
178 | bool fenix = false, | 176 | bool fenix = false, |
179 | }) { | 177 | }) { |
180 | - assert(builder != null); | ||
181 | final key = _getKey(S, name); | 178 | final key = _getKey(S, name); |
182 | _singl.putIfAbsent( | 179 | _singl.putIfAbsent( |
183 | key, | 180 | key, |
@@ -209,9 +206,7 @@ class GetInstance { | @@ -209,9 +206,7 @@ class GetInstance { | ||
209 | for (final onClose in _routesByCreate[routeName]!) { | 206 | for (final onClose in _routesByCreate[routeName]!) { |
210 | // assure the [DisposableInterface] instance holding a reference | 207 | // assure the [DisposableInterface] instance holding a reference |
211 | // to [onClose()] wasn't disposed. | 208 | // to [onClose()] wasn't disposed. |
212 | - if (onClose != null) { | ||
213 | - onClose(); | ||
214 | - } | 209 | + onClose(); |
215 | } | 210 | } |
216 | _routesByCreate[routeName]!.clear(); | 211 | _routesByCreate[routeName]!.clear(); |
217 | _routesByCreate.remove(routeName); | 212 | _routesByCreate.remove(routeName); |
@@ -222,7 +217,7 @@ class GetInstance { | @@ -222,7 +217,7 @@ class GetInstance { | ||
222 | } | 217 | } |
223 | 218 | ||
224 | for (final element in keysToRemove) { | 219 | for (final element in keysToRemove) { |
225 | - _routesKey?.remove(element); | 220 | + _routesKey.remove(element); |
226 | } | 221 | } |
227 | keysToRemove.clear(); | 222 | keysToRemove.clear(); |
228 | } | 223 | } |
@@ -286,15 +281,13 @@ class GetInstance { | @@ -286,15 +281,13 @@ class GetInstance { | ||
286 | final key = _getKey(S, tag); | 281 | final key = _getKey(S, tag); |
287 | final i = _singl[key]!.getDependency() as S?; | 282 | final i = _singl[key]!.getDependency() as S?; |
288 | if (i is GetLifeCycleBase) { | 283 | if (i is GetLifeCycleBase) { |
289 | - if (i.onStart != null) { | ||
290 | - i.onStart(); | ||
291 | - if (tag == null) { | ||
292 | - Get.log('Instance "$S" has been initialized'); | ||
293 | - } else { | ||
294 | - Get.log('Instance "$S" with tag "$tag" has been initialized'); | ||
295 | - } | 284 | + i.onStart(); |
285 | + if (tag == null) { | ||
286 | + Get.log('Instance "$S" has been initialized'); | ||
287 | + } else { | ||
288 | + Get.log('Instance "$S" with tag "$tag" has been initialized'); | ||
296 | } | 289 | } |
297 | - if (!_singl[key]!.isSingleton! && i.onDelete != null) { | 290 | + if (!_singl[key]!.isSingleton!) { |
298 | _routesByCreate[Get.reference] ??= HashSet<Function>(); | 291 | _routesByCreate[Get.reference] ??= HashSet<Function>(); |
299 | _routesByCreate[Get.reference]!.add(i.onDelete as Function); | 292 | _routesByCreate[Get.reference]!.add(i.onDelete as Function); |
300 | } | 293 | } |
@@ -398,7 +391,7 @@ class GetInstance { | @@ -398,7 +391,7 @@ class GetInstance { | ||
398 | return false; | 391 | return false; |
399 | } | 392 | } |
400 | 393 | ||
401 | - if (i is GetLifeCycleBase && i.onDelete != null) { | 394 | + if (i is GetLifeCycleBase) { |
402 | i.onDelete(); | 395 | i.onDelete(); |
403 | Get.log('"$newKey" onDelete() called'); | 396 | Get.log('"$newKey" onDelete() called'); |
404 | } | 397 | } |
@@ -18,10 +18,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { | @@ -18,10 +18,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { | ||
18 | RouteSettings? settings, | 18 | RouteSettings? settings, |
19 | this.enterBottomSheetDuration = const Duration(milliseconds: 250), | 19 | this.enterBottomSheetDuration = const Duration(milliseconds: 250), |
20 | this.exitBottomSheetDuration = const Duration(milliseconds: 200), | 20 | this.exitBottomSheetDuration = const Duration(milliseconds: 200), |
21 | - }) : assert(isScrollControlled != null), | ||
22 | - name = "BOTTOMSHEET: ${builder.hashCode}", | ||
23 | - assert(isDismissible != null), | ||
24 | - assert(enableDrag != null), | 21 | + }) : name = "BOTTOMSHEET: ${builder.hashCode}", |
25 | super(settings: settings); | 22 | super(settings: settings); |
26 | final bool? isPersistent; | 23 | final bool? isPersistent; |
27 | final WidgetBuilder? builder; | 24 | final WidgetBuilder? builder; |
@@ -80,10 +77,10 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { | @@ -80,10 +77,10 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { | ||
80 | child: _GetModalBottomSheet<T>( | 77 | child: _GetModalBottomSheet<T>( |
81 | route: this, | 78 | route: this, |
82 | backgroundColor: backgroundColor ?? | 79 | backgroundColor: backgroundColor ?? |
83 | - sheetTheme?.modalBackgroundColor ?? | ||
84 | - sheetTheme?.backgroundColor, | 80 | + sheetTheme.modalBackgroundColor ?? |
81 | + sheetTheme.backgroundColor, | ||
85 | elevation: | 82 | elevation: |
86 | - elevation ?? sheetTheme?.modalElevation ?? sheetTheme?.elevation, | 83 | + elevation ?? sheetTheme.modalElevation ?? sheetTheme.elevation, |
87 | shape: shape, | 84 | shape: shape, |
88 | clipBehavior: clipBehavior, | 85 | clipBehavior: clipBehavior, |
89 | isScrollControlled: isScrollControlled, | 86 | isScrollControlled: isScrollControlled, |
@@ -107,9 +104,7 @@ class _GetModalBottomSheet<T> extends StatefulWidget { | @@ -107,9 +104,7 @@ class _GetModalBottomSheet<T> extends StatefulWidget { | ||
107 | this.isScrollControlled = false, | 104 | this.isScrollControlled = false, |
108 | this.enableDrag = true, | 105 | this.enableDrag = true, |
109 | this.isPersistent = false, | 106 | this.isPersistent = false, |
110 | - }) : assert(isScrollControlled != null), | ||
111 | - assert(enableDrag != null), | ||
112 | - super(key: key); | 107 | + }) : super(key: key); |
113 | final bool isPersistent; | 108 | final bool isPersistent; |
114 | final GetModalBottomSheetRoute<T>? route; | 109 | final GetModalBottomSheetRoute<T>? route; |
115 | final bool isScrollControlled; | 110 | final bool isScrollControlled; |
@@ -208,9 +203,7 @@ class _GetPerModalBottomSheet<T> extends StatefulWidget { | @@ -208,9 +203,7 @@ class _GetPerModalBottomSheet<T> extends StatefulWidget { | ||
208 | this.clipBehavior, | 203 | this.clipBehavior, |
209 | this.isScrollControlled = false, | 204 | this.isScrollControlled = false, |
210 | this.enableDrag = true, | 205 | this.enableDrag = true, |
211 | - }) : assert(isScrollControlled != null), | ||
212 | - assert(enableDrag != null), | ||
213 | - super(key: key); | 206 | + }) : super(key: key); |
214 | final bool? isPersistent; | 207 | final bool? isPersistent; |
215 | final GetModalBottomSheetRoute<T>? route; | 208 | final GetModalBottomSheetRoute<T>? route; |
216 | final bool isScrollControlled; | 209 | final bool isScrollControlled; |
@@ -11,8 +11,7 @@ class GetDialogRoute<T> extends PopupRoute<T> { | @@ -11,8 +11,7 @@ class GetDialogRoute<T> extends PopupRoute<T> { | ||
11 | Duration transitionDuration = const Duration(milliseconds: 200), | 11 | Duration transitionDuration = const Duration(milliseconds: 200), |
12 | RouteTransitionsBuilder? transitionBuilder, | 12 | RouteTransitionsBuilder? transitionBuilder, |
13 | RouteSettings? settings, | 13 | RouteSettings? settings, |
14 | - }) : assert(barrierDismissible != null), | ||
15 | - widget = pageBuilder, | 14 | + }) : widget = pageBuilder, |
16 | name = "DIALOG: ${pageBuilder.hashCode}", | 15 | name = "DIALOG: ${pageBuilder.hashCode}", |
17 | _barrierDismissible = barrierDismissible, | 16 | _barrierDismissible = barrierDismissible, |
18 | _barrierLabel = barrierLabel, | 17 | _barrierLabel = barrierLabel, |
@@ -145,17 +145,15 @@ extension ExtensionSnackbar on GetInterface { | @@ -145,17 +145,15 @@ extension ExtensionSnackbar on GetInterface { | ||
145 | }) async { | 145 | }) async { |
146 | final getBar = GetBar( | 146 | final getBar = GetBar( |
147 | snackbarStatus: snackbarStatus, | 147 | snackbarStatus: snackbarStatus, |
148 | - titleText: (title == null) | ||
149 | - ? null | ||
150 | - : titleText ?? | ||
151 | - Text( | ||
152 | - title, | ||
153 | - style: TextStyle( | ||
154 | - color: colorText ?? iconColor ?? Colors.black, | ||
155 | - fontWeight: FontWeight.w800, | ||
156 | - fontSize: 16, | ||
157 | - ), | ||
158 | - ), | 148 | + titleText: titleText ?? |
149 | + Text( | ||
150 | + title, | ||
151 | + style: TextStyle( | ||
152 | + color: colorText ?? iconColor ?? Colors.black, | ||
153 | + fontWeight: FontWeight.w800, | ||
154 | + fontSize: 16, | ||
155 | + ), | ||
156 | + ), | ||
159 | messageText: messageText ?? | 157 | messageText: messageText ?? |
160 | Text( | 158 | Text( |
161 | message, | 159 | message, |
@@ -224,10 +222,6 @@ extension ExtensionDialog on GetInterface { | @@ -224,10 +222,6 @@ extension ExtensionDialog on GetInterface { | ||
224 | String? name, | 222 | String? name, |
225 | RouteSettings? routeSettings, | 223 | RouteSettings? routeSettings, |
226 | }) { | 224 | }) { |
227 | - assert(widget != null); | ||
228 | - assert(barrierDismissible != null); | ||
229 | - assert(useSafeArea != null); | ||
230 | - assert(useRootNavigator != null); | ||
231 | assert(debugCheckHasMaterialLocalizations(context!)); | 225 | assert(debugCheckHasMaterialLocalizations(context!)); |
232 | 226 | ||
233 | // final theme = Theme.of(context, shadowThemeOnly: true); | 227 | // final theme = Theme.of(context, shadowThemeOnly: true); |
@@ -236,9 +230,7 @@ extension ExtensionDialog on GetInterface { | @@ -236,9 +230,7 @@ extension ExtensionDialog on GetInterface { | ||
236 | pageBuilder: (buildContext, animation, secondaryAnimation) { | 230 | pageBuilder: (buildContext, animation, secondaryAnimation) { |
237 | final pageChild = widget; | 231 | final pageChild = widget; |
238 | Widget dialog = Builder(builder: (context) { | 232 | Widget dialog = Builder(builder: (context) { |
239 | - return theme != null | ||
240 | - ? Theme(data: theme, child: pageChild) | ||
241 | - : pageChild; | 233 | + return Theme(data: theme, child: pageChild); |
242 | }); | 234 | }); |
243 | if (useSafeArea) { | 235 | if (useSafeArea) { |
244 | dialog = SafeArea(child: dialog); | 236 | dialog = SafeArea(child: dialog); |
@@ -275,8 +267,6 @@ extension ExtensionDialog on GetInterface { | @@ -275,8 +267,6 @@ extension ExtensionDialog on GetInterface { | ||
275 | bool useRootNavigator = true, | 267 | bool useRootNavigator = true, |
276 | RouteSettings? routeSettings, | 268 | RouteSettings? routeSettings, |
277 | }) { | 269 | }) { |
278 | - assert(pageBuilder != null); | ||
279 | - assert(useRootNavigator != null); | ||
280 | assert(!barrierDismissible || barrierLabel != null); | 270 | assert(!barrierDismissible || barrierLabel != null); |
281 | return Navigator.of(overlayContext!, rootNavigator: useRootNavigator) | 271 | return Navigator.of(overlayContext!, rootNavigator: useRootNavigator) |
282 | .push<T>(GetDialogRoute<T>( | 272 | .push<T>(GetDialogRoute<T>( |
@@ -383,7 +373,7 @@ extension ExtensionDialog on GetInterface { | @@ -383,7 +373,7 @@ extension ExtensionDialog on GetInterface { | ||
383 | mainAxisSize: MainAxisSize.min, | 373 | mainAxisSize: MainAxisSize.min, |
384 | children: [ | 374 | children: [ |
385 | content ?? | 375 | content ?? |
386 | - Text(middleText ?? "", | 376 | + Text(middleText, |
387 | textAlign: TextAlign.center, style: middleTextStyle), | 377 | textAlign: TextAlign.center, style: middleTextStyle), |
388 | SizedBox(height: 16), | 378 | SizedBox(height: 16), |
389 | ButtonTheme( | 379 | ButtonTheme( |
@@ -437,13 +427,6 @@ extension ExtensionBottomSheet on GetInterface { | @@ -437,13 +427,6 @@ extension ExtensionBottomSheet on GetInterface { | ||
437 | Duration? enterBottomSheetDuration, | 427 | Duration? enterBottomSheetDuration, |
438 | Duration? exitBottomSheetDuration, | 428 | Duration? exitBottomSheetDuration, |
439 | }) { | 429 | }) { |
440 | - assert(bottomsheet != null); | ||
441 | - assert(persistent != null); | ||
442 | - assert(isScrollControlled != null); | ||
443 | - assert(useRootNavigator != null); | ||
444 | - assert(isDismissible != null); | ||
445 | - assert(enableDrag != null); | ||
446 | - | ||
447 | return Navigator.of(overlayContext!, rootNavigator: useRootNavigator) | 430 | return Navigator.of(overlayContext!, rootNavigator: useRootNavigator) |
448 | .push(GetModalBottomSheetRoute<T>( | 431 | .push(GetModalBottomSheetRoute<T>( |
449 | builder: (_) => bottomsheet, | 432 | builder: (_) => bottomsheet, |
@@ -822,7 +805,7 @@ you can only use widgets and widget functions here'''; | @@ -822,7 +805,7 @@ you can only use widgets and widget functions here'''; | ||
822 | /// [id] is for when you are using nested navigation, | 805 | /// [id] is for when you are using nested navigation, |
823 | /// as explained in documentation | 806 | /// as explained in documentation |
824 | void close(int times, [int? id]) { | 807 | void close(int times, [int? id]) { |
825 | - if ((times == null) || (times < 1)) { | 808 | + if (times < 1) { |
826 | times = 1; | 809 | times = 1; |
827 | } | 810 | } |
828 | var count = 0; | 811 | var count = 0; |
@@ -874,7 +857,7 @@ you can only use widgets and widget functions here'''; | @@ -874,7 +857,7 @@ you can only use widgets and widget functions here'''; | ||
874 | return null; | 857 | return null; |
875 | } | 858 | } |
876 | return global(id)?.currentState?.pushReplacement(GetPageRoute( | 859 | return global(id)?.currentState?.pushReplacement(GetPageRoute( |
877 | - opaque: opaque ?? true, | 860 | + opaque: opaque, |
878 | page: _resolve(page, 'off'), | 861 | page: _resolve(page, 'off'), |
879 | binding: binding, | 862 | binding: binding, |
880 | settings: RouteSettings(arguments: arguments), | 863 | settings: RouteSettings(arguments: arguments), |
@@ -934,7 +917,7 @@ you can only use widgets and widget functions here'''; | @@ -934,7 +917,7 @@ you can only use widgets and widget functions here'''; | ||
934 | 917 | ||
935 | return global(id)?.currentState?.pushAndRemoveUntil<T>( | 918 | return global(id)?.currentState?.pushAndRemoveUntil<T>( |
936 | GetPageRoute<T>( | 919 | GetPageRoute<T>( |
937 | - opaque: opaque ?? true, | 920 | + opaque: opaque, |
938 | popGesture: popGesture ?? defaultPopGesture, | 921 | popGesture: popGesture ?? defaultPopGesture, |
939 | page: _resolve(page, 'offAll'), | 922 | page: _resolve(page, 'offAll'), |
940 | binding: binding, | 923 | binding: binding, |
@@ -950,19 +933,15 @@ you can only use widgets and widget functions here'''; | @@ -950,19 +933,15 @@ you can only use widgets and widget functions here'''; | ||
950 | 933 | ||
951 | void addPages(List<GetPage>? getPages) { | 934 | void addPages(List<GetPage>? getPages) { |
952 | if (getPages != null) { | 935 | if (getPages != null) { |
953 | - if (routeTree == null) { | ||
954 | - routeTree = ParseRouteTree(); | ||
955 | - } | 936 | + routeTree = ParseRouteTree(); |
956 | 937 | ||
957 | - routeTree!.addRoutes(getPages); | 938 | + routeTree.addRoutes(getPages); |
958 | } | 939 | } |
959 | } | 940 | } |
960 | 941 | ||
961 | void addPage(GetPage getPage) { | 942 | void addPage(GetPage getPage) { |
962 | - if (getPage != null) { | ||
963 | - if (routeTree == null) routeTree = ParseRouteTree(); | ||
964 | - routeTree!.addRoute(getPage); | ||
965 | - } | 943 | + routeTree = ParseRouteTree(); |
944 | + routeTree.addRoute(getPage); | ||
966 | } | 945 | } |
967 | 946 | ||
968 | /// change default config of Get | 947 | /// change default config of Get |
@@ -1100,7 +1079,7 @@ Since version 2.8 it is possible to access the properties | @@ -1100,7 +1079,7 @@ Since version 2.8 it is possible to access the properties | ||
1100 | /// give access to current Overlay Context | 1079 | /// give access to current Overlay Context |
1101 | BuildContext? get overlayContext { | 1080 | BuildContext? get overlayContext { |
1102 | BuildContext? overlay; | 1081 | BuildContext? overlay; |
1103 | - key?.currentState?.overlay?.context?.visitChildElements((element) { | 1082 | + key?.currentState?.overlay?.context.visitChildElements((element) { |
1104 | overlay = element; | 1083 | overlay = element; |
1105 | }); | 1084 | }); |
1106 | return overlay; | 1085 | return overlay; |
@@ -1166,7 +1145,7 @@ Since version 2.8 it is possible to access the properties | @@ -1166,7 +1145,7 @@ Since version 2.8 it is possible to access the properties | ||
1166 | (ui.window.platformBrightness == Brightness.dark); | 1145 | (ui.window.platformBrightness == Brightness.dark); |
1167 | 1146 | ||
1168 | /// give access to Theme.of(context).iconTheme.color | 1147 | /// give access to Theme.of(context).iconTheme.color |
1169 | - Color? get iconColor => theme?.iconTheme?.color; | 1148 | + Color? get iconColor => theme?.iconTheme.color; |
1170 | 1149 | ||
1171 | /// give access to FocusScope.of(context) | 1150 | /// give access to FocusScope.of(context) |
1172 | FocusNode? get focusScope => FocusManager.instance.primaryFocus; | 1151 | FocusNode? get focusScope => FocusManager.instance.primaryFocus; |
@@ -1204,8 +1183,8 @@ Since version 2.8 it is possible to access the properties | @@ -1204,8 +1183,8 @@ Since version 2.8 it is possible to access the properties | ||
1204 | 1183 | ||
1205 | Routing get routing => getxController.routing; | 1184 | Routing get routing => getxController.routing; |
1206 | 1185 | ||
1207 | - Map<String?, String> get parameters => getxController.parameters; | ||
1208 | - set parameters(Map<String?, String> newParameters) => | 1186 | + Map<String, String?> get parameters => getxController.parameters; |
1187 | + set parameters(Map<String, String?> newParameters) => | ||
1209 | getxController.parameters = newParameters; | 1188 | getxController.parameters = newParameters; |
1210 | 1189 | ||
1211 | ParseRouteTree get routeTree => getxController.routeTree; | 1190 | ParseRouteTree get routeTree => getxController.routeTree; |
@@ -31,11 +31,7 @@ class GetPageRoute<T> extends PageRoute<T> { | @@ -31,11 +31,7 @@ class GetPageRoute<T> extends PageRoute<T> { | ||
31 | this.maintainState = true, | 31 | this.maintainState = true, |
32 | bool fullscreenDialog = false, | 32 | bool fullscreenDialog = false, |
33 | this.middlewares, | 33 | this.middlewares, |
34 | - }) : assert(opaque != null), | ||
35 | - assert(barrierDismissible != null), | ||
36 | - assert(maintainState != null), | ||
37 | - assert(fullscreenDialog != null), | ||
38 | - reference = "$routeName: ${page.hashCode}", | 34 | + }) : reference = "$routeName: ${page.hashCode}", |
39 | super(settings: settings, fullscreenDialog: fullscreenDialog); | 35 | super(settings: settings, fullscreenDialog: fullscreenDialog); |
40 | 36 | ||
41 | @override | 37 | @override |
@@ -416,10 +412,7 @@ class _CupertinoBackGestureDetector<T> extends StatefulWidget { | @@ -416,10 +412,7 @@ class _CupertinoBackGestureDetector<T> extends StatefulWidget { | ||
416 | required this.enabledCallback, | 412 | required this.enabledCallback, |
417 | required this.onStartPopGesture, | 413 | required this.onStartPopGesture, |
418 | required this.child, | 414 | required this.child, |
419 | - }) : assert(enabledCallback != null), | ||
420 | - assert(onStartPopGesture != null), | ||
421 | - assert(child != null), | ||
422 | - super(key: key); | 415 | + }) : super(key: key); |
423 | 416 | ||
424 | final Widget child; | 417 | final Widget child; |
425 | 418 | ||
@@ -533,8 +526,7 @@ class _CupertinoBackGestureController<T> { | @@ -533,8 +526,7 @@ class _CupertinoBackGestureController<T> { | ||
533 | _CupertinoBackGestureController({ | 526 | _CupertinoBackGestureController({ |
534 | required this.navigator, | 527 | required this.navigator, |
535 | required this.controller, | 528 | required this.controller, |
536 | - }) : assert(navigator != null), | ||
537 | - assert(controller != null) { | 529 | + }) { |
538 | navigator.didStartUserGesture(); | 530 | navigator.didStartUserGesture(); |
539 | } | 531 | } |
540 | 532 |
@@ -51,11 +51,7 @@ class GetPage { | @@ -51,11 +51,7 @@ class GetPage { | ||
51 | this.fullscreenDialog = false, | 51 | this.fullscreenDialog = false, |
52 | this.children, | 52 | this.children, |
53 | this.middlewares, | 53 | this.middlewares, |
54 | - }) : path = _nameToRegex(name), | ||
55 | - assert(page != null), | ||
56 | - assert(name != null), | ||
57 | - assert(maintainState != null), | ||
58 | - assert(fullscreenDialog != null); | 54 | + }) : path = _nameToRegex(name); |
59 | 55 | ||
60 | static PathDecoded _nameToRegex(String path) { | 56 | static PathDecoded _nameToRegex(String path) { |
61 | var keys = <String?>[]; | 57 | var keys = <String?>[]; |
@@ -36,7 +36,7 @@ class Routing { | @@ -36,7 +36,7 @@ class Routing { | ||
36 | /// Extracts the name of a route based on it's instance type | 36 | /// Extracts the name of a route based on it's instance type |
37 | /// or null if not possible. | 37 | /// or null if not possible. |
38 | String? _extractRouteName(Route? route) { | 38 | String? _extractRouteName(Route? route) { |
39 | - if (route?.settings?.name != null) { | 39 | + if (route?.settings.name != null) { |
40 | return route!.settings.name; | 40 | return route!.settings.name; |
41 | } | 41 | } |
42 | 42 | ||
@@ -110,7 +110,7 @@ class GetObserver extends NavigatorObserver { | @@ -110,7 +110,7 @@ class GetObserver extends NavigatorObserver { | ||
110 | value.current = newRoute.name ?? ''; | 110 | value.current = newRoute.name ?? ''; |
111 | } | 111 | } |
112 | 112 | ||
113 | - value.args = route?.settings?.arguments; | 113 | + value.args = route.settings.arguments; |
114 | value.route = route; | 114 | value.route = route; |
115 | value.isBack = false; | 115 | value.isBack = false; |
116 | value.removed = ''; | 116 | value.removed = ''; |
@@ -151,7 +151,7 @@ class GetObserver extends NavigatorObserver { | @@ -151,7 +151,7 @@ class GetObserver extends NavigatorObserver { | ||
151 | value.current = _extractRouteName(previousRoute) ?? ''; | 151 | value.current = _extractRouteName(previousRoute) ?? ''; |
152 | } | 152 | } |
153 | 153 | ||
154 | - value.args = route?.settings?.arguments; | 154 | + value.args = route.settings.arguments; |
155 | value.route = previousRoute; | 155 | value.route = previousRoute; |
156 | value.isBack = true; | 156 | value.isBack = true; |
157 | value.removed = ''; | 157 | value.removed = ''; |
@@ -183,7 +183,7 @@ class GetObserver extends NavigatorObserver { | @@ -183,7 +183,7 @@ class GetObserver extends NavigatorObserver { | ||
183 | value.current = newName ?? ''; | 183 | value.current = newName ?? ''; |
184 | } | 184 | } |
185 | 185 | ||
186 | - value.args = newRoute?.settings?.arguments; | 186 | + value.args = newRoute?.settings.arguments; |
187 | value.route = newRoute; | 187 | value.route = newRoute; |
188 | value.isBack = false; | 188 | value.isBack = false; |
189 | value.removed = ''; | 189 | value.removed = ''; |
@@ -113,7 +113,7 @@ class MiddlewareRunner { | @@ -113,7 +113,7 @@ class MiddlewareRunner { | ||
113 | } | 113 | } |
114 | 114 | ||
115 | GetPage? runOnPageCalled(GetPage? page) { | 115 | GetPage? runOnPageCalled(GetPage? page) { |
116 | - _getMiddlewares()!.forEach((element) { | 116 | + _getMiddlewares()?.forEach((element) { |
117 | page = element.onPageCalled(page); | 117 | page = element.onPageCalled(page); |
118 | }); | 118 | }); |
119 | return page; | 119 | return page; |
@@ -121,7 +121,7 @@ class MiddlewareRunner { | @@ -121,7 +121,7 @@ class MiddlewareRunner { | ||
121 | 121 | ||
122 | RouteSettings? runRedirect(String? route) { | 122 | RouteSettings? runRedirect(String? route) { |
123 | RouteSettings? to; | 123 | RouteSettings? to; |
124 | - _getMiddlewares()!.forEach((element) { | 124 | + _getMiddlewares()?.forEach((element) { |
125 | to = element.redirect(route); | 125 | to = element.redirect(route); |
126 | }); | 126 | }); |
127 | if (to != null) { | 127 | if (to != null) { |
@@ -131,28 +131,28 @@ class MiddlewareRunner { | @@ -131,28 +131,28 @@ class MiddlewareRunner { | ||
131 | } | 131 | } |
132 | 132 | ||
133 | List<Bindings>? runOnBindingsStart(List<Bindings>? bindings) { | 133 | List<Bindings>? runOnBindingsStart(List<Bindings>? bindings) { |
134 | - _getMiddlewares()!.forEach((element) { | 134 | + _getMiddlewares()?.forEach((element) { |
135 | bindings = element.onBindingsStart(bindings); | 135 | bindings = element.onBindingsStart(bindings); |
136 | }); | 136 | }); |
137 | return bindings; | 137 | return bindings; |
138 | } | 138 | } |
139 | 139 | ||
140 | GetPageBuilder? runOnPageBuildStart(GetPageBuilder? page) { | 140 | GetPageBuilder? runOnPageBuildStart(GetPageBuilder? page) { |
141 | - _getMiddlewares()!.forEach((element) { | 141 | + _getMiddlewares()?.forEach((element) { |
142 | page = element.onPageBuildStart(page); | 142 | page = element.onPageBuildStart(page); |
143 | }); | 143 | }); |
144 | return page; | 144 | return page; |
145 | } | 145 | } |
146 | 146 | ||
147 | Widget runOnPageBuilt(Widget page) { | 147 | Widget runOnPageBuilt(Widget page) { |
148 | - _getMiddlewares()!.forEach((element) { | 148 | + _getMiddlewares()?.forEach((element) { |
149 | page = element.onPageBuilt(page); | 149 | page = element.onPageBuilt(page); |
150 | }); | 150 | }); |
151 | return page; | 151 | return page; |
152 | } | 152 | } |
153 | 153 | ||
154 | void runOnPageDispose() => | 154 | void runOnPageDispose() => |
155 | - _getMiddlewares()!.forEach((element) => element.onPageDispose()); | 155 | + _getMiddlewares()?.forEach((element) => element.onPageDispose()); |
156 | } | 156 | } |
157 | 157 | ||
158 | class PageRedirect { | 158 | class PageRedirect { |
@@ -205,11 +205,11 @@ class PageRedirect { | @@ -205,11 +205,11 @@ class PageRedirect { | ||
205 | 205 | ||
206 | /// check if redirect is needed | 206 | /// check if redirect is needed |
207 | bool needRecheck() { | 207 | bool needRecheck() { |
208 | - final match = Get.routeTree!.matchRoute(settings.name!); | ||
209 | - Get.parameters = match?.parameters; | 208 | + final match = Get.routeTree.matchRoute(settings.name!); |
209 | + Get.parameters = match.parameters; | ||
210 | 210 | ||
211 | // No Match found | 211 | // No Match found |
212 | - if (match?.route == null) { | 212 | + if (match.route == null) { |
213 | isUnknown = true; | 213 | isUnknown = true; |
214 | return false; | 214 | return false; |
215 | } | 215 | } |
@@ -233,12 +233,8 @@ class PageRedirect { | @@ -233,12 +233,8 @@ class PageRedirect { | ||
233 | void addPageParameter(GetPage route) { | 233 | void addPageParameter(GetPage route) { |
234 | if (route.parameter == null) return; | 234 | if (route.parameter == null) return; |
235 | 235 | ||
236 | - if (Get.parameters == null) { | ||
237 | - Get.parameters = route.parameter!; | ||
238 | - } else { | ||
239 | - final parameters = Get.parameters; | ||
240 | - parameters.addEntries(route.parameter!.entries); | ||
241 | - Get.parameters = parameters; | ||
242 | - } | 236 | + final parameters = Get.parameters; |
237 | + parameters.addEntries(route.parameter!.entries); | ||
238 | + Get.parameters = parameters; | ||
243 | } | 239 | } |
244 | } | 240 | } |
@@ -601,10 +601,9 @@ Set either a message or messageText"""); | @@ -601,10 +601,9 @@ Set either a message or messageText"""); | ||
601 | ), | 601 | ), |
602 | ), | 602 | ), |
603 | Padding( | 603 | Padding( |
604 | - padding: EdgeInsets.only(right: buttonRightPadding), | ||
605 | - child: _getMainActionButton(), | ||
606 | - ) ?? | ||
607 | - _emptyWidget, | 604 | + padding: EdgeInsets.only(right: buttonRightPadding), |
605 | + child: _getMainActionButton(), | ||
606 | + ), | ||
608 | ]; | 607 | ]; |
609 | } | 608 | } |
610 | } | 609 | } |
@@ -176,8 +176,7 @@ class SnackRoute<T> extends OverlayRoute<T> { | @@ -176,8 +176,7 @@ class SnackRoute<T> extends OverlayRoute<T> { | ||
176 | AnimationController createAnimationController() { | 176 | AnimationController createAnimationController() { |
177 | assert(!_transitionCompleter.isCompleted, | 177 | assert(!_transitionCompleter.isCompleted, |
178 | 'Cannot reuse a $runtimeType after disposing it.'); | 178 | 'Cannot reuse a $runtimeType after disposing it.'); |
179 | - assert(snack.animationDuration != null && | ||
180 | - snack.animationDuration >= Duration.zero); | 179 | + assert(snack.animationDuration >= Duration.zero); |
181 | return AnimationController( | 180 | return AnimationController( |
182 | duration: snack.animationDuration, | 181 | duration: snack.animationDuration, |
183 | debugLabel: debugLabel, | 182 | debugLabel: debugLabel, |
@@ -14,59 +14,61 @@ class MiniSubscription<T> { | @@ -14,59 +14,61 @@ class MiniSubscription<T> { | ||
14 | final Callback? onDone; | 14 | final Callback? onDone; |
15 | final bool cancelOnError; | 15 | final bool cancelOnError; |
16 | 16 | ||
17 | - Future<void> cancel() async => listener!.removeListener(this); | 17 | + Future<void> cancel() async => listener.removeListener(this); |
18 | 18 | ||
19 | - final FastList<T>? listener; | 19 | + final FastList<T> listener; |
20 | } | 20 | } |
21 | 21 | ||
22 | class MiniStream<T> { | 22 | class MiniStream<T> { |
23 | - FastList<T?>? listenable = FastList<T>(); | 23 | + FastList<T> listenable = FastList<T>(); |
24 | 24 | ||
25 | - T? _value; | 25 | + late T _value; |
26 | 26 | ||
27 | - T? get value => _value; | 27 | + T get value => _value; |
28 | 28 | ||
29 | - set value(T? val) { | 29 | + set value(T val) { |
30 | add(val); | 30 | add(val); |
31 | } | 31 | } |
32 | 32 | ||
33 | - void add(T? event) { | ||
34 | - assert(listenable != null); | 33 | + void add(T event) { |
35 | _value = event; | 34 | _value = event; |
36 | - listenable!._notifyData(event); | 35 | + listenable._notifyData(event); |
37 | } | 36 | } |
38 | 37 | ||
39 | void addError(Object error, [StackTrace? stackTrace]) { | 38 | void addError(Object error, [StackTrace? stackTrace]) { |
40 | - assert(listenable != null); | ||
41 | - listenable!._notifyError(error, stackTrace); | 39 | + listenable._notifyError(error, stackTrace); |
42 | } | 40 | } |
43 | 41 | ||
44 | - int get length => listenable!.length; | 42 | + int get length => listenable.length; |
45 | 43 | ||
46 | - bool get hasListeners => listenable!.isNotEmpty; | 44 | + bool get hasListeners => listenable.isNotEmpty; |
47 | 45 | ||
48 | - bool get isClosed => listenable == null; | 46 | + bool get isClosed => _isClosed; |
49 | 47 | ||
50 | - MiniSubscription<T?> listen(void Function(T? event) onData, | ||
51 | - {Function? onError, void Function()? onDone, bool cancelOnError = false}) { | ||
52 | - final subs = MiniSubscription<T?>( | 48 | + MiniSubscription<T> listen(void Function(T event) onData, |
49 | + {Function? onError, | ||
50 | + void Function()? onDone, | ||
51 | + bool cancelOnError = false}) { | ||
52 | + final subs = MiniSubscription<T>( | ||
53 | onData, | 53 | onData, |
54 | onError, | 54 | onError, |
55 | onDone, | 55 | onDone, |
56 | cancelOnError, | 56 | cancelOnError, |
57 | listenable, | 57 | listenable, |
58 | ); | 58 | ); |
59 | - listenable!.addListener(subs); | 59 | + listenable.addListener(subs); |
60 | return subs; | 60 | return subs; |
61 | } | 61 | } |
62 | 62 | ||
63 | + bool _isClosed = false; | ||
64 | + | ||
63 | void close() { | 65 | void close() { |
64 | - if (listenable == null) { | 66 | + if (_isClosed) { |
65 | throw 'You can not close a closed Stream'; | 67 | throw 'You can not close a closed Stream'; |
66 | } | 68 | } |
67 | - listenable!._notifyDone(); | ||
68 | - listenable = null; | ||
69 | - _value = null; | 69 | + listenable._notifyDone(); |
70 | + listenable.clear(); | ||
71 | + _isClosed = true; | ||
70 | } | 72 | } |
71 | } | 73 | } |
72 | 74 | ||
@@ -74,18 +76,18 @@ class FastList<T> { | @@ -74,18 +76,18 @@ class FastList<T> { | ||
74 | Node<MiniSubscription<T>>? _head; | 76 | Node<MiniSubscription<T>>? _head; |
75 | 77 | ||
76 | void _notifyData(T data) { | 78 | void _notifyData(T data) { |
77 | - var currentNode = _head!; | 79 | + var currentNode = _head; |
78 | do { | 80 | do { |
79 | - currentNode.data!.data(data); | ||
80 | - currentNode = currentNode.next!; | 81 | + currentNode?.data?.data(data); |
82 | + currentNode = currentNode?.next; | ||
81 | } while (currentNode != null); | 83 | } while (currentNode != null); |
82 | } | 84 | } |
83 | 85 | ||
84 | void _notifyDone() { | 86 | void _notifyDone() { |
85 | - var currentNode = _head!; | 87 | + var currentNode = _head; |
86 | do { | 88 | do { |
87 | - currentNode.data!.onDone?.call(); | ||
88 | - currentNode = currentNode.next!; | 89 | + currentNode?.data?.onDone?.call(); |
90 | + currentNode = currentNode?.next; | ||
89 | } while (currentNode != null); | 91 | } while (currentNode != null); |
90 | } | 92 | } |
91 | 93 | ||
@@ -164,6 +166,13 @@ class FastList<T> { | @@ -164,6 +166,13 @@ class FastList<T> { | ||
164 | } | 166 | } |
165 | } | 167 | } |
166 | 168 | ||
169 | + void clear() { | ||
170 | + var length = this.length; | ||
171 | + for (var i = 0; i < length; i++) { | ||
172 | + _removeAt(i); | ||
173 | + } | ||
174 | + } | ||
175 | + | ||
167 | MiniSubscription<T>? _removeAt(int position) { | 176 | MiniSubscription<T>? _removeAt(int position) { |
168 | var index = 0; | 177 | var index = 0; |
169 | var currentNode = _head; | 178 | var currentNode = _head; |
@@ -408,18 +408,18 @@ class RxDouble extends _BaseRxNum<double?> { | @@ -408,18 +408,18 @@ class RxDouble extends _BaseRxNum<double?> { | ||
408 | double truncateToDouble() => value!.truncateToDouble(); | 408 | double truncateToDouble() => value!.truncateToDouble(); |
409 | } | 409 | } |
410 | 410 | ||
411 | -class RxInt extends _BaseRxNum<int?> { | ||
412 | - RxInt([int? initial]) : super(initial); | 411 | +class RxInt extends _BaseRxNum<int> { |
412 | + RxInt(int initial) : super(initial); | ||
413 | 413 | ||
414 | /// Addition operator. | 414 | /// Addition operator. |
415 | RxInt operator +(int other) { | 415 | RxInt operator +(int other) { |
416 | - value = value! + other; | 416 | + value = value + other; |
417 | return this; | 417 | return this; |
418 | } | 418 | } |
419 | 419 | ||
420 | /// Subtraction operator. | 420 | /// Subtraction operator. |
421 | RxInt operator -(int other) { | 421 | RxInt operator -(int other) { |
422 | - value = value! - other; | 422 | + value = value - other; |
423 | return this; | 423 | return this; |
424 | } | 424 | } |
425 | 425 | ||
@@ -431,7 +431,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -431,7 +431,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
431 | /// | 431 | /// |
432 | /// If both operands are negative, the result is negative, otherwise | 432 | /// If both operands are negative, the result is negative, otherwise |
433 | /// the result is non-negative. | 433 | /// the result is non-negative. |
434 | - int operator &(int other) => value! & other; | 434 | + int operator &(int other) => value & other; |
435 | 435 | ||
436 | /// Bit-wise or operator. | 436 | /// Bit-wise or operator. |
437 | /// | 437 | /// |
@@ -441,7 +441,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -441,7 +441,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
441 | /// | 441 | /// |
442 | /// If both operands are non-negative, the result is non-negative, | 442 | /// If both operands are non-negative, the result is non-negative, |
443 | /// otherwise the result is negative. | 443 | /// otherwise the result is negative. |
444 | - int operator |(int other) => value! | other; | 444 | + int operator |(int other) => value | other; |
445 | 445 | ||
446 | /// Bit-wise exclusive-or operator. | 446 | /// Bit-wise exclusive-or operator. |
447 | /// | 447 | /// |
@@ -451,7 +451,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -451,7 +451,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
451 | /// | 451 | /// |
452 | /// If the operands have the same sign, the result is non-negative, | 452 | /// If the operands have the same sign, the result is non-negative, |
453 | /// otherwise the result is negative. | 453 | /// otherwise the result is negative. |
454 | - int operator ^(int other) => value! ^ other; | 454 | + int operator ^(int other) => value ^ other; |
455 | 455 | ||
456 | /// The bit-wise negate operator. | 456 | /// The bit-wise negate operator. |
457 | /// | 457 | /// |
@@ -459,7 +459,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -459,7 +459,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
459 | /// the result is a number with the opposite bits set. | 459 | /// the result is a number with the opposite bits set. |
460 | /// | 460 | /// |
461 | /// This maps any integer `x` to `-x - 1`. | 461 | /// This maps any integer `x` to `-x - 1`. |
462 | - int operator ~() => ~value!; | 462 | + int operator ~() => ~value; |
463 | 463 | ||
464 | /// Shift the bits of this integer to the left by [shiftAmount]. | 464 | /// Shift the bits of this integer to the left by [shiftAmount]. |
465 | /// | 465 | /// |
@@ -471,7 +471,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -471,7 +471,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
471 | /// mask. | 471 | /// mask. |
472 | /// | 472 | /// |
473 | /// It is an error if [shiftAmount] is negative. | 473 | /// It is an error if [shiftAmount] is negative. |
474 | - int operator <<(int shiftAmount) => value! << shiftAmount; | 474 | + int operator <<(int shiftAmount) => value << shiftAmount; |
475 | 475 | ||
476 | /// Shift the bits of this integer to the right by [shiftAmount]. | 476 | /// Shift the bits of this integer to the right by [shiftAmount]. |
477 | /// | 477 | /// |
@@ -480,13 +480,13 @@ class RxInt extends _BaseRxNum<int?> { | @@ -480,13 +480,13 @@ class RxInt extends _BaseRxNum<int?> { | ||
480 | ///`pow(2, shiftIndex)`. | 480 | ///`pow(2, shiftIndex)`. |
481 | /// | 481 | /// |
482 | /// It is an error if [shiftAmount] is negative. | 482 | /// It is an error if [shiftAmount] is negative. |
483 | - int operator >>(int shiftAmount) => value! >> shiftAmount; | 483 | + int operator >>(int shiftAmount) => value >> shiftAmount; |
484 | 484 | ||
485 | /// Returns this integer to the power of [exponent] modulo [modulus]. | 485 | /// Returns this integer to the power of [exponent] modulo [modulus]. |
486 | /// | 486 | /// |
487 | /// The [exponent] must be non-negative and [modulus] must be | 487 | /// The [exponent] must be non-negative and [modulus] must be |
488 | /// positive. | 488 | /// positive. |
489 | - int modPow(int exponent, int modulus) => value!.modPow(exponent, modulus); | 489 | + int modPow(int exponent, int modulus) => value.modPow(exponent, modulus); |
490 | 490 | ||
491 | /// Returns the modular multiplicative inverse of this integer | 491 | /// Returns the modular multiplicative inverse of this integer |
492 | /// modulo [modulus]. | 492 | /// modulo [modulus]. |
@@ -494,7 +494,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -494,7 +494,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
494 | /// The [modulus] must be positive. | 494 | /// The [modulus] must be positive. |
495 | /// | 495 | /// |
496 | /// It is an error if no modular inverse exists. | 496 | /// It is an error if no modular inverse exists. |
497 | - int modInverse(int modulus) => value!.modInverse(modulus); | 497 | + int modInverse(int modulus) => value.modInverse(modulus); |
498 | 498 | ||
499 | /// Returns the greatest common divisor of this integer and [other]. | 499 | /// Returns the greatest common divisor of this integer and [other]. |
500 | /// | 500 | /// |
@@ -507,13 +507,13 @@ class RxInt extends _BaseRxNum<int?> { | @@ -507,13 +507,13 @@ class RxInt extends _BaseRxNum<int?> { | ||
507 | /// For any integer `x`, `x.gcd(x)` is `x.abs()`. | 507 | /// For any integer `x`, `x.gcd(x)` is `x.abs()`. |
508 | /// | 508 | /// |
509 | /// If both `this` and `other` is zero, the result is also zero. | 509 | /// If both `this` and `other` is zero, the result is also zero. |
510 | - int gcd(int other) => value!.gcd(other); | 510 | + int gcd(int other) => value.gcd(other); |
511 | 511 | ||
512 | /// Returns true if and only if this integer is even. | 512 | /// Returns true if and only if this integer is even. |
513 | - bool get isEven => value!.isEven; | 513 | + bool get isEven => value.isEven; |
514 | 514 | ||
515 | /// Returns true if and only if this integer is odd. | 515 | /// Returns true if and only if this integer is odd. |
516 | - bool get isOdd => value!.isOdd; | 516 | + bool get isOdd => value.isOdd; |
517 | 517 | ||
518 | /// Returns the minimum number of bits required to store this integer. | 518 | /// Returns the minimum number of bits required to store this integer. |
519 | /// | 519 | /// |
@@ -535,7 +535,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -535,7 +535,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
535 | /// (-3).bitLength == 2; // 11111101 | 535 | /// (-3).bitLength == 2; // 11111101 |
536 | /// (-4).bitLength == 2; // 11111100 | 536 | /// (-4).bitLength == 2; // 11111100 |
537 | /// ``` | 537 | /// ``` |
538 | - int get bitLength => value!.bitLength; | 538 | + int get bitLength => value.bitLength; |
539 | 539 | ||
540 | /// Returns the least significant [width] bits of this integer as a | 540 | /// Returns the least significant [width] bits of this integer as a |
541 | /// non-negative number (i.e. unsigned representation). The returned value | 541 | /// non-negative number (i.e. unsigned representation). The returned value |
@@ -557,7 +557,7 @@ class RxInt extends _BaseRxNum<int?> { | @@ -557,7 +557,7 @@ class RxInt extends _BaseRxNum<int?> { | ||
557 | /// ``` | 557 | /// ``` |
558 | /// x == x.toUnsigned(x.bitLength); | 558 | /// x == x.toUnsigned(x.bitLength); |
559 | /// ``` | 559 | /// ``` |
560 | - int toUnsigned(int width) => value!.toUnsigned(width); | 560 | + int toUnsigned(int width) => value.toUnsigned(width); |
561 | 561 | ||
562 | /// Returns the least significant [width] bits of this integer, extending the | 562 | /// Returns the least significant [width] bits of this integer, extending the |
563 | /// highest retained bit to the sign. This is the same as truncating the | 563 | /// highest retained bit to the sign. This is the same as truncating the |
@@ -587,57 +587,57 @@ class RxInt extends _BaseRxNum<int?> { | @@ -587,57 +587,57 @@ class RxInt extends _BaseRxNum<int?> { | ||
587 | /// ``` | 587 | /// ``` |
588 | /// x == x.toSigned(x.bitLength + 1); | 588 | /// x == x.toSigned(x.bitLength + 1); |
589 | /// ``` | 589 | /// ``` |
590 | - int toSigned(int width) => value!.toSigned(width); | 590 | + int toSigned(int width) => value.toSigned(width); |
591 | 591 | ||
592 | /// Return the negative value of this integer. | 592 | /// Return the negative value of this integer. |
593 | /// | 593 | /// |
594 | /// The result of negating an integer always has the opposite sign, except | 594 | /// The result of negating an integer always has the opposite sign, except |
595 | /// for zero, which is its own negation. | 595 | /// for zero, which is its own negation. |
596 | @override | 596 | @override |
597 | - int operator -() => -value!; | 597 | + int operator -() => -value; |
598 | 598 | ||
599 | /// Returns the absolute value of this integer. | 599 | /// Returns the absolute value of this integer. |
600 | /// | 600 | /// |
601 | /// For any integer `x`, the result is the same as `x < 0 ? -x : x`. | 601 | /// For any integer `x`, the result is the same as `x < 0 ? -x : x`. |
602 | @override | 602 | @override |
603 | - int abs() => value!.abs(); | 603 | + int abs() => value.abs(); |
604 | 604 | ||
605 | /// Returns the sign of this integer. | 605 | /// Returns the sign of this integer. |
606 | /// | 606 | /// |
607 | /// Returns 0 for zero, -1 for values less than zero and | 607 | /// Returns 0 for zero, -1 for values less than zero and |
608 | /// +1 for values greater than zero. | 608 | /// +1 for values greater than zero. |
609 | @override | 609 | @override |
610 | - int get sign => value!.sign; | 610 | + int get sign => value.sign; |
611 | 611 | ||
612 | /// Returns `this`. | 612 | /// Returns `this`. |
613 | @override | 613 | @override |
614 | - int round() => value!.round(); | 614 | + int round() => value.round(); |
615 | 615 | ||
616 | /// Returns `this`. | 616 | /// Returns `this`. |
617 | @override | 617 | @override |
618 | - int floor() => value!.floor(); | 618 | + int floor() => value.floor(); |
619 | 619 | ||
620 | /// Returns `this`. | 620 | /// Returns `this`. |
621 | @override | 621 | @override |
622 | - int ceil() => value!.ceil(); | 622 | + int ceil() => value.ceil(); |
623 | 623 | ||
624 | /// Returns `this`. | 624 | /// Returns `this`. |
625 | @override | 625 | @override |
626 | - int truncate() => value!.truncate(); | 626 | + int truncate() => value.truncate(); |
627 | 627 | ||
628 | /// Returns `this.toDouble()`. | 628 | /// Returns `this.toDouble()`. |
629 | @override | 629 | @override |
630 | - double roundToDouble() => value!.roundToDouble(); | 630 | + double roundToDouble() => value.roundToDouble(); |
631 | 631 | ||
632 | /// Returns `this.toDouble()`. | 632 | /// Returns `this.toDouble()`. |
633 | @override | 633 | @override |
634 | - double floorToDouble() => value!.floorToDouble(); | 634 | + double floorToDouble() => value.floorToDouble(); |
635 | 635 | ||
636 | /// Returns `this.toDouble()`. | 636 | /// Returns `this.toDouble()`. |
637 | @override | 637 | @override |
638 | - double ceilToDouble() => value!.ceilToDouble(); | 638 | + double ceilToDouble() => value.ceilToDouble(); |
639 | 639 | ||
640 | /// Returns `this.toDouble()`. | 640 | /// Returns `this.toDouble()`. |
641 | @override | 641 | @override |
642 | - double truncateToDouble() => value!.truncateToDouble(); | 642 | + double truncateToDouble() => value.truncateToDouble(); |
643 | } | 643 | } |
@@ -5,9 +5,7 @@ class RxList<E> extends ListMixin<E> | @@ -5,9 +5,7 @@ class RxList<E> extends ListMixin<E> | ||
5 | with NotifyManager<List<E>>, RxObjectMixin<List<E>> | 5 | with NotifyManager<List<E>>, RxObjectMixin<List<E>> |
6 | implements RxInterface<List<E>> { | 6 | implements RxInterface<List<E>> { |
7 | RxList([List<E> initial = const []]) { | 7 | RxList([List<E> initial = const []]) { |
8 | - if (initial != null) { | ||
9 | - _value = List.from(initial); | ||
10 | - } | 8 | + _value = List.from(initial); |
11 | } | 9 | } |
12 | 10 | ||
13 | factory RxList.filled(int length, E fill, {bool growable = false}) { | 11 | factory RxList.filled(int length, E fill, {bool growable = false}) { |
@@ -40,11 +38,11 @@ class RxList<E> extends ListMixin<E> | @@ -40,11 +38,11 @@ class RxList<E> extends ListMixin<E> | ||
40 | } | 38 | } |
41 | 39 | ||
42 | @override | 40 | @override |
43 | - Iterator<E> get iterator => value!.iterator; | 41 | + Iterator<E> get iterator => value.iterator; |
44 | 42 | ||
45 | @override | 43 | @override |
46 | void operator []=(int index, E val) { | 44 | void operator []=(int index, E val) { |
47 | - _value![index] = val; | 45 | + _value[index] = val; |
48 | refresh(); | 46 | refresh(); |
49 | } | 47 | } |
50 | 48 | ||
@@ -59,18 +57,18 @@ class RxList<E> extends ListMixin<E> | @@ -59,18 +57,18 @@ class RxList<E> extends ListMixin<E> | ||
59 | 57 | ||
60 | @override | 58 | @override |
61 | E operator [](int index) { | 59 | E operator [](int index) { |
62 | - return value![index]; | 60 | + return value[index]; |
63 | } | 61 | } |
64 | 62 | ||
65 | @override | 63 | @override |
66 | void add(E item) { | 64 | void add(E item) { |
67 | - _value!.add(item); | 65 | + _value.add(item); |
68 | refresh(); | 66 | refresh(); |
69 | } | 67 | } |
70 | 68 | ||
71 | @override | 69 | @override |
72 | void addAll(Iterable<E> item) { | 70 | void addAll(Iterable<E> item) { |
73 | - _value!.addAll(item); | 71 | + _value.addAll(item); |
74 | refresh(); | 72 | refresh(); |
75 | } | 73 | } |
76 | 74 | ||
@@ -103,17 +101,17 @@ class RxList<E> extends ListMixin<E> | @@ -103,17 +101,17 @@ class RxList<E> extends ListMixin<E> | ||
103 | 101 | ||
104 | @override | 102 | @override |
105 | Iterable<E> where(bool Function(E) test) { | 103 | Iterable<E> where(bool Function(E) test) { |
106 | - return value!.where(test); | 104 | + return value.where(test); |
107 | } | 105 | } |
108 | 106 | ||
109 | @override | 107 | @override |
110 | Iterable<T> whereType<T>() { | 108 | Iterable<T> whereType<T>() { |
111 | - return value!.whereType<T>(); | 109 | + return value.whereType<T>(); |
112 | } | 110 | } |
113 | 111 | ||
114 | @override | 112 | @override |
115 | void sort([int compare(E a, E b)?]) { | 113 | void sort([int compare(E a, E b)?]) { |
116 | - _value!.sort(compare); | 114 | + _value.sort(compare); |
117 | refresh(); | 115 | refresh(); |
118 | } | 116 | } |
119 | } | 117 | } |
@@ -126,10 +124,10 @@ extension ListExtension<E> on List<E> { | @@ -126,10 +124,10 @@ extension ListExtension<E> on List<E> { | ||
126 | if (item != null) add(item); | 124 | if (item != null) add(item); |
127 | } | 125 | } |
128 | 126 | ||
129 | - /// Add [Iterable<E>] to [List<E>] only if [Iterable<E>] is not null. | ||
130 | - void addAllNonNull(Iterable<E> item) { | ||
131 | - if (item != null) addAll(item); | ||
132 | - } | 127 | + // /// Add [Iterable<E>] to [List<E>] only if [Iterable<E>] is not null. |
128 | + // void addAllNonNull(Iterable<E> item) { | ||
129 | + // if (item != null) addAll(item); | ||
130 | + // } | ||
133 | 131 | ||
134 | /// Add [item] to [List<E>] only if [condition] is true. | 132 | /// Add [item] to [List<E>] only if [condition] is true. |
135 | void addIf(dynamic condition, E item) { | 133 | void addIf(dynamic condition, E item) { |
@@ -146,7 +144,7 @@ extension ListExtension<E> on List<E> { | @@ -146,7 +144,7 @@ extension ListExtension<E> on List<E> { | ||
146 | /// Replaces all existing items of this list with [item] | 144 | /// Replaces all existing items of this list with [item] |
147 | void assign(E item) { | 145 | void assign(E item) { |
148 | if (this is RxList) { | 146 | if (this is RxList) { |
149 | - (this as RxList)._value ??= <E>[]; | 147 | + (this as RxList)._value; |
150 | } | 148 | } |
151 | 149 | ||
152 | clear(); | 150 | clear(); |
@@ -156,7 +154,7 @@ extension ListExtension<E> on List<E> { | @@ -156,7 +154,7 @@ extension ListExtension<E> on List<E> { | ||
156 | /// Replaces all existing items of this list with [items] | 154 | /// Replaces all existing items of this list with [items] |
157 | void assignAll(Iterable<E> items) { | 155 | void assignAll(Iterable<E> items) { |
158 | if (this is RxList) { | 156 | if (this is RxList) { |
159 | - (this as RxList)._value ??= <E>[]; | 157 | + (this as RxList)._value; |
160 | } | 158 | } |
161 | clear(); | 159 | clear(); |
162 | addAll(items); | 160 | addAll(items); |
@@ -4,9 +4,7 @@ class RxMap<K, V> extends MapMixin<K, V> | @@ -4,9 +4,7 @@ class RxMap<K, V> extends MapMixin<K, V> | ||
4 | with NotifyManager<Map<K, V>>, RxObjectMixin<Map<K, V>> | 4 | with NotifyManager<Map<K, V>>, RxObjectMixin<Map<K, V>> |
5 | implements RxInterface<Map<K, V>> { | 5 | implements RxInterface<Map<K, V>> { |
6 | RxMap([Map<K, V> initial = const {}]) { | 6 | RxMap([Map<K, V> initial = const {}]) { |
7 | - if (initial != null) { | ||
8 | - _value = Map.from(initial); | ||
9 | - } | 7 | + _value = Map.from(initial); |
10 | } | 8 | } |
11 | 9 | ||
12 | factory RxMap.from(Map<K, V> other) { | 10 | factory RxMap.from(Map<K, V> other) { |
@@ -30,27 +28,27 @@ class RxMap<K, V> extends MapMixin<K, V> | @@ -30,27 +28,27 @@ class RxMap<K, V> extends MapMixin<K, V> | ||
30 | 28 | ||
31 | @override | 29 | @override |
32 | V? operator [](Object? key) { | 30 | V? operator [](Object? key) { |
33 | - return value![key as K]; | 31 | + return value[key as K]; |
34 | } | 32 | } |
35 | 33 | ||
36 | @override | 34 | @override |
37 | void operator []=(K key, V value) { | 35 | void operator []=(K key, V value) { |
38 | - _value![key] = value; | 36 | + _value[key] = value; |
39 | refresh(); | 37 | refresh(); |
40 | } | 38 | } |
41 | 39 | ||
42 | @override | 40 | @override |
43 | void clear() { | 41 | void clear() { |
44 | - _value!.clear(); | 42 | + _value.clear(); |
45 | refresh(); | 43 | refresh(); |
46 | } | 44 | } |
47 | 45 | ||
48 | @override | 46 | @override |
49 | - Iterable<K> get keys => value!.keys; | 47 | + Iterable<K> get keys => value.keys; |
50 | 48 | ||
51 | @override | 49 | @override |
52 | V? remove(Object? key) { | 50 | V? remove(Object? key) { |
53 | - final val = _value!.remove(key); | 51 | + final val = _value.remove(key); |
54 | refresh(); | 52 | refresh(); |
55 | return val; | 53 | return val; |
56 | } | 54 | } |
@@ -85,8 +83,8 @@ extension MapExtension<K, V> on Map<K, V> { | @@ -85,8 +83,8 @@ extension MapExtension<K, V> on Map<K, V> { | ||
85 | void assign(K key, V val) { | 83 | void assign(K key, V val) { |
86 | if (this is RxMap) { | 84 | if (this is RxMap) { |
87 | final map = (this as RxMap); | 85 | final map = (this as RxMap); |
88 | - map._value ??= <K, V>{}; | ||
89 | - map._value!.clear(); | 86 | + map._value; |
87 | + map._value.clear(); | ||
90 | this[key] = val; | 88 | this[key] = val; |
91 | } else { | 89 | } else { |
92 | clear(); | 90 | clear(); |
@@ -4,9 +4,7 @@ class RxSet<E> extends SetMixin<E> | @@ -4,9 +4,7 @@ class RxSet<E> extends SetMixin<E> | ||
4 | with NotifyManager<Set<E>>, RxObjectMixin<Set<E>> | 4 | with NotifyManager<Set<E>>, RxObjectMixin<Set<E>> |
5 | implements RxInterface<Set<E>> { | 5 | implements RxInterface<Set<E>> { |
6 | RxSet([Set<E> initial = const {}]) { | 6 | RxSet([Set<E> initial = const {}]) { |
7 | - if (initial != null) { | ||
8 | - _value = Set.from(initial); | ||
9 | - } | 7 | + _value = Set.from(initial); |
10 | } | 8 | } |
11 | 9 | ||
12 | /// Special override to push() element(s) in a reactive way | 10 | /// Special override to push() element(s) in a reactive way |
@@ -41,30 +39,30 @@ class RxSet<E> extends SetMixin<E> | @@ -41,30 +39,30 @@ class RxSet<E> extends SetMixin<E> | ||
41 | 39 | ||
42 | @override | 40 | @override |
43 | bool add(E value) { | 41 | bool add(E value) { |
44 | - final val = _value!.add(value); | 42 | + final val = _value.add(value); |
45 | refresh(); | 43 | refresh(); |
46 | return val; | 44 | return val; |
47 | } | 45 | } |
48 | 46 | ||
49 | @override | 47 | @override |
50 | bool contains(Object? element) { | 48 | bool contains(Object? element) { |
51 | - return value!.contains(element); | 49 | + return value.contains(element); |
52 | } | 50 | } |
53 | 51 | ||
54 | @override | 52 | @override |
55 | - Iterator<E> get iterator => value!.iterator; | 53 | + Iterator<E> get iterator => value.iterator; |
56 | 54 | ||
57 | @override | 55 | @override |
58 | - int get length => value!.length; | 56 | + int get length => value.length; |
59 | 57 | ||
60 | @override | 58 | @override |
61 | E? lookup(Object? object) { | 59 | E? lookup(Object? object) { |
62 | - return value!.lookup(object); | 60 | + return value.lookup(object); |
63 | } | 61 | } |
64 | 62 | ||
65 | @override | 63 | @override |
66 | bool remove(Object? item) { | 64 | bool remove(Object? item) { |
67 | - var hasRemoved = _value!.remove(item); | 65 | + var hasRemoved = _value.remove(item); |
68 | if (hasRemoved) { | 66 | if (hasRemoved) { |
69 | refresh(); | 67 | refresh(); |
70 | } | 68 | } |
@@ -73,36 +71,36 @@ class RxSet<E> extends SetMixin<E> | @@ -73,36 +71,36 @@ class RxSet<E> extends SetMixin<E> | ||
73 | 71 | ||
74 | @override | 72 | @override |
75 | Set<E> toSet() { | 73 | Set<E> toSet() { |
76 | - return value!.toSet(); | 74 | + return value.toSet(); |
77 | } | 75 | } |
78 | 76 | ||
79 | @override | 77 | @override |
80 | void addAll(Iterable<E> item) { | 78 | void addAll(Iterable<E> item) { |
81 | - _value!.addAll(item); | 79 | + _value.addAll(item); |
82 | refresh(); | 80 | refresh(); |
83 | } | 81 | } |
84 | 82 | ||
85 | @override | 83 | @override |
86 | void clear() { | 84 | void clear() { |
87 | - _value!.clear(); | 85 | + _value.clear(); |
88 | refresh(); | 86 | refresh(); |
89 | } | 87 | } |
90 | 88 | ||
91 | @override | 89 | @override |
92 | void removeAll(Iterable<Object?> elements) { | 90 | void removeAll(Iterable<Object?> elements) { |
93 | - _value!.removeAll(elements); | 91 | + _value.removeAll(elements); |
94 | refresh(); | 92 | refresh(); |
95 | } | 93 | } |
96 | 94 | ||
97 | @override | 95 | @override |
98 | void retainAll(Iterable<Object?> elements) { | 96 | void retainAll(Iterable<Object?> elements) { |
99 | - _value!.retainAll(elements); | 97 | + _value.retainAll(elements); |
100 | refresh(); | 98 | refresh(); |
101 | } | 99 | } |
102 | 100 | ||
103 | @override | 101 | @override |
104 | void retainWhere(bool Function(E) E) { | 102 | void retainWhere(bool Function(E) E) { |
105 | - _value!.retainWhere(E); | 103 | + _value.retainWhere(E); |
106 | refresh(); | 104 | refresh(); |
107 | } | 105 | } |
108 | } | 106 | } |
@@ -137,7 +135,7 @@ extension SetExtension<E> on Set<E> { | @@ -137,7 +135,7 @@ extension SetExtension<E> on Set<E> { | ||
137 | /// Replaces all existing items of this list with [item] | 135 | /// Replaces all existing items of this list with [item] |
138 | void assign(E item) { | 136 | void assign(E item) { |
139 | if (this is RxSet) { | 137 | if (this is RxSet) { |
140 | - (this as RxSet)._value ??= <E>{}; | 138 | + (this as RxSet)._value; |
141 | } | 139 | } |
142 | 140 | ||
143 | clear(); | 141 | clear(); |
@@ -147,7 +145,7 @@ extension SetExtension<E> on Set<E> { | @@ -147,7 +145,7 @@ extension SetExtension<E> on Set<E> { | ||
147 | /// Replaces all existing items of this list with [items] | 145 | /// Replaces all existing items of this list with [items] |
148 | void assignAll(Iterable<E> items) { | 146 | void assignAll(Iterable<E> items) { |
149 | if (this is RxSet) { | 147 | if (this is RxSet) { |
150 | - (this as RxSet)._value ??= <E>{}; | 148 | + (this as RxSet)._value; |
151 | } | 149 | } |
152 | clear(); | 150 | clear(); |
153 | addAll(items); | 151 | addAll(items); |
@@ -184,7 +184,6 @@ Worker interval<T>( | @@ -184,7 +184,6 @@ Worker interval<T>( | ||
184 | bool? cancelOnError, | 184 | bool? cancelOnError, |
185 | }) { | 185 | }) { |
186 | var debounceActive = false; | 186 | var debounceActive = false; |
187 | - time ??= const Duration(seconds: 1); | ||
188 | StreamSubscription sub = listener.listen( | 187 | StreamSubscription sub = listener.listen( |
189 | (event) async { | 188 | (event) async { |
190 | if (debounceActive || !_conditional(condition)) return; | 189 | if (debounceActive || !_conditional(condition)) return; |
@@ -67,7 +67,7 @@ class GetXState<T extends DisposableInterface> extends State<GetX<T>> { | @@ -67,7 +67,7 @@ class GetXState<T extends DisposableInterface> extends State<GetX<T>> { | ||
67 | } else { | 67 | } else { |
68 | controller = widget.init; | 68 | controller = widget.init; |
69 | isCreator = true; | 69 | isCreator = true; |
70 | - GetInstance().put<T?>(controller, tag: widget.tag); | 70 | + GetInstance().put<T>(controller!, tag: widget.tag); |
71 | } | 71 | } |
72 | } else { | 72 | } else { |
73 | controller = widget.init; | 73 | controller = widget.init; |
@@ -138,7 +138,6 @@ extension StateExt<T> on StateMixin<T> { | @@ -138,7 +138,6 @@ extension StateExt<T> on StateMixin<T> { | ||
138 | Widget? onLoading, | 138 | Widget? onLoading, |
139 | Widget? onEmpty, | 139 | Widget? onEmpty, |
140 | }) { | 140 | }) { |
141 | - assert(widget != null); | ||
142 | return SimpleBuilder(builder: (_) { | 141 | return SimpleBuilder(builder: (_) { |
143 | if (status.isLoading) { | 142 | if (status.isLoading) { |
144 | return onLoading ?? const Center(child: CircularProgressIndicator()); | 143 | return onLoading ?? const Center(child: CircularProgressIndicator()); |
@@ -51,7 +51,7 @@ typedef GetControllerBuilder<T extends DisposableInterface> = Widget Function( | @@ -51,7 +51,7 @@ typedef GetControllerBuilder<T extends DisposableInterface> = Widget Function( | ||
51 | // } | 51 | // } |
52 | // } | 52 | // } |
53 | 53 | ||
54 | -class GetBuilder<T extends GetxController?> extends StatefulWidget { | 54 | +class GetBuilder<T extends GetxController> extends StatefulWidget { |
55 | final GetControllerBuilder<T> builder; | 55 | final GetControllerBuilder<T> builder; |
56 | final bool global; | 56 | final bool global; |
57 | final Object? id; | 57 | final Object? id; |
@@ -77,8 +77,7 @@ class GetBuilder<T extends GetxController?> extends StatefulWidget { | @@ -77,8 +77,7 @@ class GetBuilder<T extends GetxController?> extends StatefulWidget { | ||
77 | this.id, | 77 | this.id, |
78 | this.didChangeDependencies, | 78 | this.didChangeDependencies, |
79 | this.didUpdateWidget, | 79 | this.didUpdateWidget, |
80 | - }) : assert(builder != null), | ||
81 | - super(key: key); | 80 | + }) : super(key: key); |
82 | 81 | ||
83 | // static T of<T extends GetxController>( | 82 | // static T of<T extends GetxController>( |
84 | // BuildContext context, { | 83 | // BuildContext context, { |
@@ -103,7 +102,7 @@ class GetBuilder<T extends GetxController?> extends StatefulWidget { | @@ -103,7 +102,7 @@ class GetBuilder<T extends GetxController?> extends StatefulWidget { | ||
103 | _GetBuilderState<T> createState() => _GetBuilderState<T>(); | 102 | _GetBuilderState<T> createState() => _GetBuilderState<T>(); |
104 | } | 103 | } |
105 | 104 | ||
106 | -class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | 105 | +class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>> |
107 | with GetStateUpdaterMixin { | 106 | with GetStateUpdaterMixin { |
108 | T? controller; | 107 | T? controller; |
109 | bool? isCreator = false; | 108 | bool? isCreator = false; |
@@ -136,7 +135,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | @@ -136,7 +135,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | ||
136 | } else { | 135 | } else { |
137 | controller = widget.init; | 136 | controller = widget.init; |
138 | isCreator = true; | 137 | isCreator = true; |
139 | - GetInstance().put<T?>(controller, tag: widget.tag); | 138 | + GetInstance().put<T>(controller!, tag: widget.tag); |
140 | } | 139 | } |
141 | } else { | 140 | } else { |
142 | controller = widget.init; | 141 | controller = widget.init; |
@@ -145,7 +144,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | @@ -145,7 +144,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | ||
145 | } | 144 | } |
146 | 145 | ||
147 | if (widget.filter != null) { | 146 | if (widget.filter != null) { |
148 | - _filter = widget.filter!(controller); | 147 | + _filter = widget.filter!(controller!); |
149 | } | 148 | } |
150 | 149 | ||
151 | _subscribeToController(); | 150 | _subscribeToController(); |
@@ -167,7 +166,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | @@ -167,7 +166,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | ||
167 | } | 166 | } |
168 | 167 | ||
169 | void _filterUpdate() { | 168 | void _filterUpdate() { |
170 | - var newFilter = widget.filter!(controller); | 169 | + var newFilter = widget.filter!(controller!); |
171 | if (newFilter != _filter) { | 170 | if (newFilter != _filter) { |
172 | _filter = newFilter; | 171 | _filter = newFilter; |
173 | getUpdate(); | 172 | getUpdate(); |
@@ -201,7 +200,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | @@ -201,7 +200,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | ||
201 | 200 | ||
202 | @override | 201 | @override |
203 | void didUpdateWidget(GetBuilder oldWidget) { | 202 | void didUpdateWidget(GetBuilder oldWidget) { |
204 | - super.didUpdateWidget(oldWidget as GetBuilder<T?>); | 203 | + super.didUpdateWidget(oldWidget as GetBuilder<T>); |
205 | // to avoid conflicts when modifying a "grouped" id list. | 204 | // to avoid conflicts when modifying a "grouped" id list. |
206 | if (oldWidget.id != widget.id) { | 205 | if (oldWidget.id != widget.id) { |
207 | _subscribeToController(); | 206 | _subscribeToController(); |
@@ -215,7 +214,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | @@ -215,7 +214,7 @@ class _GetBuilderState<T extends GetxController?> extends State<GetBuilder<T?>> | ||
215 | // model: controller, | 214 | // model: controller, |
216 | // child: widget.builder(controller), | 215 | // child: widget.builder(controller), |
217 | // ); | 216 | // ); |
218 | - return widget.builder(controller); | 217 | + return widget.builder(controller!); |
219 | } | 218 | } |
220 | } | 219 | } |
221 | 220 |
@@ -21,7 +21,7 @@ class GetWidgetCacheElement extends ComponentElement { | @@ -21,7 +21,7 @@ class GetWidgetCacheElement extends ComponentElement { | ||
21 | 21 | ||
22 | @override | 22 | @override |
23 | void mount(Element? parent, dynamic newSlot) { | 23 | void mount(Element? parent, dynamic newSlot) { |
24 | - cache?.onInit(); | 24 | + cache.onInit(); |
25 | super.mount(parent, newSlot); | 25 | super.mount(parent, newSlot); |
26 | } | 26 | } |
27 | 27 |
@@ -23,8 +23,7 @@ class MixinBuilder<T extends GetxController> extends StatelessWidget { | @@ -23,8 +23,7 @@ class MixinBuilder<T extends GetxController> extends StatelessWidget { | ||
23 | this.id, | 23 | this.id, |
24 | this.didChangeDependencies, | 24 | this.didChangeDependencies, |
25 | this.didUpdateWidget, | 25 | this.didUpdateWidget, |
26 | - }) : assert(builder != null), | ||
27 | - super(key: key); | 26 | + }) : super(key: key); |
28 | 27 | ||
29 | @override | 28 | @override |
30 | Widget build(BuildContext context) { | 29 | Widget build(BuildContext context) { |
@@ -64,7 +64,7 @@ class _ValueBuilderState<T> extends State<ValueBuilder<T?>> { | @@ -64,7 +64,7 @@ class _ValueBuilderState<T> extends State<ValueBuilder<T?>> { | ||
64 | @override | 64 | @override |
65 | void dispose() { | 65 | void dispose() { |
66 | super.dispose(); | 66 | super.dispose(); |
67 | - widget?.onDispose?.call(); | 67 | + widget.onDispose?.call(); |
68 | if (value is ChangeNotifier) { | 68 | if (value is ChangeNotifier) { |
69 | (value as ChangeNotifier?)?.dispose(); | 69 | (value as ChangeNotifier?)?.dispose(); |
70 | } else if (value is StreamController) { | 70 | } else if (value is StreamController) { |
@@ -78,9 +78,7 @@ class _ValueBuilderState<T> extends State<ValueBuilder<T?>> { | @@ -78,9 +78,7 @@ class _ValueBuilderState<T> extends State<ValueBuilder<T?>> { | ||
78 | class SimpleBuilder extends StatefulWidget { | 78 | class SimpleBuilder extends StatefulWidget { |
79 | final Widget Function(BuildContext) builder; | 79 | final Widget Function(BuildContext) builder; |
80 | 80 | ||
81 | - const SimpleBuilder({Key? key, required this.builder}) | ||
82 | - : assert(builder != null), | ||
83 | - super(key: key); | 81 | + const SimpleBuilder({Key? key, required this.builder}) : super(key: key); |
84 | 82 | ||
85 | @override | 83 | @override |
86 | _SimpleBuilderState createState() => _SimpleBuilderState(); | 84 | _SimpleBuilderState createState() => _SimpleBuilderState(); |
@@ -10,7 +10,8 @@ extension Trans on String? { | @@ -10,7 +10,8 @@ extension Trans on String? { | ||
10 | // whether the key is also present. | 10 | // whether the key is also present. |
11 | if (Get.translations.containsKey( | 11 | if (Get.translations.containsKey( |
12 | "${Get.locale!.languageCode}_${Get.locale!.countryCode}") && | 12 | "${Get.locale!.languageCode}_${Get.locale!.countryCode}") && |
13 | - Get.translations["${Get.locale!.languageCode}_${Get.locale!.countryCode}"]! | 13 | + Get.translations[ |
14 | + "${Get.locale!.languageCode}_${Get.locale!.countryCode}"]! | ||
14 | .containsKey(this)) { | 15 | .containsKey(this)) { |
15 | return Get.translations[ | 16 | return Get.translations[ |
16 | "${Get.locale!.languageCode}_${Get.locale!.countryCode}"]![this!]; | 17 | "${Get.locale!.languageCode}_${Get.locale!.countryCode}"]![this!]; |
@@ -214,7 +214,7 @@ class GetUtils { | @@ -214,7 +214,7 @@ class GetUtils { | ||
214 | 214 | ||
215 | /// Checks if string is phone number. | 215 | /// Checks if string is phone number. |
216 | static bool isPhoneNumber(String s) { | 216 | static bool isPhoneNumber(String s) { |
217 | - if (s == null || s.length > 16 || s.length < 9) return false; | 217 | + if (s.length > 16 || s.length < 9) return false; |
218 | return hasMatch(s, r'^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$'); | 218 | return hasMatch(s, r'^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$'); |
219 | } | 219 | } |
220 | 220 | ||
@@ -413,10 +413,6 @@ class GetUtils { | @@ -413,10 +413,6 @@ class GetUtils { | ||
413 | 413 | ||
414 | //Check if num is a cnpj | 414 | //Check if num is a cnpj |
415 | static bool isCnpj(String cnpj) { | 415 | static bool isCnpj(String cnpj) { |
416 | - if (cnpj == null) { | ||
417 | - return false; | ||
418 | - } | ||
419 | - | ||
420 | // Obter somente os números do CNPJ | 416 | // Obter somente os números do CNPJ |
421 | final numbers = cnpj.replaceAll(RegExp(r'[^0-9]'), ''); | 417 | final numbers = cnpj.replaceAll(RegExp(r'[^0-9]'), ''); |
422 | 418 | ||
@@ -466,9 +462,9 @@ class GetUtils { | @@ -466,9 +462,9 @@ class GetUtils { | ||
466 | 462 | ||
467 | /// Checks if the cpf is valid. | 463 | /// Checks if the cpf is valid. |
468 | static bool isCpf(String cpf) { | 464 | static bool isCpf(String cpf) { |
469 | - if (cpf == null) { | ||
470 | - return false; | ||
471 | - } | 465 | + // if (cpf == null) { |
466 | + // return false; | ||
467 | + // } | ||
472 | 468 | ||
473 | // get only the numbers | 469 | // get only the numbers |
474 | final numbers = cpf.replaceAll(RegExp(r'[^0-9]'), ''); | 470 | final numbers = cpf.replaceAll(RegExp(r'[^0-9]'), ''); |
@@ -148,7 +148,7 @@ referenceValue is ${calculePercentage(referenceValue, requestedValue)}% more tha | @@ -148,7 +148,7 @@ referenceValue is ${calculePercentage(referenceValue, requestedValue)}% more tha | ||
148 | print('GetValue delay $getx ms to made $times requests'); | 148 | print('GetValue delay $getx ms to made $times requests'); |
149 | print('-----------'); | 149 | print('-----------'); |
150 | print(''' | 150 | print(''' |
151 | -GetValue is ${calculePercentage(dart, getx).round()}% more fast than Default ValueNotifier with $times listeners'''); | 151 | +GetValue is ${calculePercentage(dart, getx).round()}% more fast than Default ValueNotifier with $times requests'''); |
152 | }); | 152 | }); |
153 | 153 | ||
154 | test('run benchmarks from Streams', () async { | 154 | test('run benchmarks from Streams', () async { |
@@ -161,7 +161,7 @@ GetValue is ${calculePercentage(dart, getx).round()}% more fast than Default Val | @@ -161,7 +161,7 @@ GetValue is ${calculePercentage(dart, getx).round()}% more fast than Default Val | ||
161 | var dart = await stream(); | 161 | var dart = await stream(); |
162 | print('-----------'); | 162 | print('-----------'); |
163 | print(''' | 163 | print(''' |
164 | -GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default Stream with $times listeners'''); | 164 | +GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default Stream with $times requests'''); |
165 | print('-----------'); | 165 | print('-----------'); |
166 | 166 | ||
167 | times = 30000; | 167 | times = 30000; |
@@ -179,7 +179,7 @@ GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default St | @@ -179,7 +179,7 @@ GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default St | ||
179 | print('getx_mini_stream delay $mini ms to made $times requests'); | 179 | print('getx_mini_stream delay $mini ms to made $times requests'); |
180 | print('-----------'); | 180 | print('-----------'); |
181 | print(''' | 181 | print(''' |
182 | -GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default Stream with $times listeners'''); | 182 | +GetStream is ${calculePercentage(dart, mini).round()}% more fast than Default Stream with $times requests'''); |
183 | }); | 183 | }); |
184 | } | 184 | } |
185 | 185 |
1 | -import 'package:flutter/material.dart'; | ||
2 | -import 'package:flutter_test/flutter_test.dart'; | ||
3 | -import 'package:get/get.dart'; | 1 | +// import 'package:flutter/material.dart'; |
2 | +// import 'package:flutter_test/flutter_test.dart'; | ||
3 | +// import 'package:get/get.dart'; | ||
4 | 4 | ||
5 | void main() { | 5 | void main() { |
6 | // testWidgets( | 6 | // testWidgets( |
@@ -24,7 +24,8 @@ void main() { | @@ -24,7 +24,8 @@ void main() { | ||
24 | // "GetPage name null", | 24 | // "GetPage name null", |
25 | // (tester) async { | 25 | // (tester) async { |
26 | // expect( | 26 | // expect( |
27 | - // () => GetPage(page: () => Scaffold(), maintainState: null, name: null), | 27 | + // () => GetPage(page: () => Scaffold(), |
28 | + // maintainState: null, name: null), | ||
28 | // throwsAssertionError, | 29 | // throwsAssertionError, |
29 | // ); | 30 | // ); |
30 | // }, | 31 | // }, |
@@ -6,9 +6,9 @@ import 'package:get/get.dart'; | @@ -6,9 +6,9 @@ import 'package:get/get.dart'; | ||
6 | void main() { | 6 | void main() { |
7 | test('once', () async { | 7 | test('once', () async { |
8 | final count = 0.obs; | 8 | final count = 0.obs; |
9 | - int? result = -1; | 9 | + var result = -1; |
10 | once(count, (dynamic _) { | 10 | once(count, (dynamic _) { |
11 | - result = _ as int?; | 11 | + result = _ as int; |
12 | }); | 12 | }); |
13 | count.value++; | 13 | count.value++; |
14 | await Future.delayed(Duration.zero); | 14 | await Future.delayed(Duration.zero); |
@@ -23,9 +23,9 @@ void main() { | @@ -23,9 +23,9 @@ void main() { | ||
23 | 23 | ||
24 | test('ever', () async { | 24 | test('ever', () async { |
25 | final count = 0.obs; | 25 | final count = 0.obs; |
26 | - int? result = -1; | ||
27 | - ever(count, (dynamic _) { | ||
28 | - result = _ as int?; | 26 | + var result = -1; |
27 | + ever<int>(count, (value) { | ||
28 | + result = value; | ||
29 | }); | 29 | }); |
30 | count.value++; | 30 | count.value++; |
31 | await Future.delayed(Duration.zero); | 31 | await Future.delayed(Duration.zero); |
@@ -68,18 +68,18 @@ void main() { | @@ -68,18 +68,18 @@ void main() { | ||
68 | expect(find.text("single 0"), findsOneWidget); | 68 | expect(find.text("single 0"), findsOneWidget); |
69 | }); | 69 | }); |
70 | 70 | ||
71 | - testWidgets( | ||
72 | - "MixinBuilder with build null", | ||
73 | - (test) async { | ||
74 | - expect( | ||
75 | - () => GetBuilder<Controller>( | ||
76 | - init: Controller(), | ||
77 | - builder: null, | ||
78 | - ), | ||
79 | - throwsAssertionError, | ||
80 | - ); | ||
81 | - }, | ||
82 | - ); | 71 | + // testWidgets( |
72 | + // "MixinBuilder with build null", | ||
73 | + // (test) async { | ||
74 | + // expect( | ||
75 | + // () => GetBuilder<Controller>( | ||
76 | + // init: Controller(), | ||
77 | + // builder: null, | ||
78 | + // ), | ||
79 | + // throwsAssertionError, | ||
80 | + // ); | ||
81 | + // }, | ||
82 | + // ); | ||
83 | } | 83 | } |
84 | 84 | ||
85 | class Controller extends GetxController { | 85 | class Controller extends GetxController { |
-
Please register or login to post a comment