attach method
Implementation
@override
Widget? attach(BuildContext context, LoaderViewController<T> controller) {
if (connection) {
if (stream != null) {
return StreamBuilder(
stream: stream?.call(),
builder: (context, snapshot) {
controller.data = snapshot.data;
var state = LoadingState.from(snapshot);
Widget? child;
if (state.isLoading) {
child = onLoading?.call(context, controller);
} else if (state.isNullable) {
child = onNullable?.call(context, controller);
} else {
return onLoaded(context, controller);
}
return child ?? onLoaded(context, controller);
},
);
} else {
return FutureBuilder(
future: future?.call(),
builder: (context, snapshot) {
controller.data = snapshot.data;
var state = LoadingState.from(snapshot);
Widget? child;
if (state.isLoading) {
child = onLoading?.call(context, controller);
} else if (state.isNullable) {
child = onNullable?.call(context, controller);
} else {
return onLoaded(context, controller);
}
return child ?? onLoaded(context, controller);
},
);
}
} else {
return onFailed?.call(context, controller) ??
onLoaded(context, controller);
}
}