arjundevlucid

added backward compability (Flutter 3)

typedef ValueUpdater<T> = T Function();
T? ambiguate<T>(T? value) => value;
... ...
import 'package:flutter/foundation.dart';
import 'package:flutter/scheduler.dart';
import '../../get.dart';
/// The [GetLifeCycle]
///
/// ```dart
... ... @@ -16,7 +18,8 @@ mixin GetLifeCycleMixin {
@protected
@mustCallSuper
void onInit() {
SchedulerBinding.instance?.addPostFrameCallback((_) => onReady());
ambiguate(SchedulerBinding.instance)
?.addPostFrameCallback((_) => onReady());
}
/// Called 1 frame after onInit(). It is the perfect place to enter
... ...
... ... @@ -358,7 +358,7 @@ extension ExtensionSnackbar on GetInterface {
if (instantInit) {
controller.show();
} else {
SchedulerBinding.instance!.addPostFrameCallback((_) {
ambiguate(SchedulerBinding.instance)!.addPostFrameCallback((_) {
controller.show();
});
}
... ... @@ -469,7 +469,7 @@ extension ExtensionSnackbar on GetInterface {
controller.show();
} else {
//routing.isSnackbar = true;
SchedulerBinding.instance!.addPostFrameCallback((_) {
ambiguate(SchedulerBinding.instance)!.addPostFrameCallback((_) {
controller.show();
});
}
... ...
... ... @@ -52,7 +52,7 @@ class RouterReportManager<T> {
void reportRouteDispose(T disposed) {
if (Get.smartManagement != SmartManagement.onlyBuilder) {
WidgetsBinding.instance!.addPostFrameCallback((_) {
ambiguate(WidgetsBinding.instance)!.addPostFrameCallback((_) {
_removeDependencyByRoute(disposed);
});
}
... ...
... ... @@ -449,7 +449,7 @@ You need to either use message[String], or messageText[Widget] or define a userI
}
void _configureLeftBarFuture() {
SchedulerBinding.instance!.addPostFrameCallback(
ambiguate(SchedulerBinding.instance)!.addPostFrameCallback(
(_) {
final keyContext = _backgroundBoxKey.currentContext;
if (keyContext != null) {
... ...
... ... @@ -96,13 +96,13 @@ mixin FullLifeCycleMixin on FullLifeCycleController {
@override
void onInit() {
super.onInit();
WidgetsBinding.instance!.addObserver(this);
ambiguate(WidgetsBinding.instance)!.addObserver(this);
}
@mustCallSuper
@override
void onClose() {
WidgetsBinding.instance!.removeObserver(this);
ambiguate(WidgetsBinding.instance)!.removeObserver(this);
super.onClose();
}
... ...
... ... @@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/scheduler.dart';
import 'package:flutter/widgets.dart';
import '../../../get_core/src/typedefs.dart';
import 'list_notifier.dart';
typedef ValueBuilderUpdateCallback<T> = void Function(T snapshot);
... ... @@ -102,13 +103,14 @@ mixin ObserverComponent on ComponentElement {
Future<bool> _safeRebuild() async {
if (dirty) return false;
if (SchedulerBinding.instance == null) {
if (ambiguate(SchedulerBinding.instance) == null) {
markNeedsBuild();
} else {
// refresh was called during the building
if (SchedulerBinding.instance!.schedulerPhase != SchedulerPhase.idle) {
if (ambiguate(SchedulerBinding.instance)!.schedulerPhase
!= SchedulerPhase.idle) {
// Await for the end of build
await SchedulerBinding.instance!.endOfFrame;
await ambiguate(SchedulerBinding.instance)!.endOfFrame;
if (dirty) return false;
}
... ...