StatefulDataMonitor<A> constructor

StatefulDataMonitor<A>({
  1. Key? key,
  2. dynamic onSuccess(
    1. StatefulData
    )?,
  3. dynamic onError(
    1. String
    )?,
  4. required StatefulData selector(
    1. BuildContext,
    2. A
    ),
  5. required ValueWidgetBuilder<StatefulData> builder,
})

Implementation

StatefulDataMonitor({
  Key? key,
  Function(StatefulData)? onSuccess,
  Function(String)? onError,
  required StatefulData Function(BuildContext, A) selector,
  required ValueWidgetBuilder<StatefulData> builder,
})  : assert(selector != null),
      super(
      key: key,
      builder: (context, viewState, child) {
        print(viewState.toString());
        if(!viewState.consume) {
          switch(viewState.state) {
            case DataState.loading:
              EasyLoading.show(status: viewState.loadingMessage, maskType: EasyLoadingMaskType.clear);
              break;
            case DataState.success:
              EasyLoading.dismiss();
              break;
            case DataState.error:
              EasyLoading.dismiss();
              break;
            case DataState.progress:
              WidgetsBinding.instance!.addPostFrameCallback((_){
                EasyLoading.showProgress(viewState.progress,
                    status: '${(viewState.progress * 100).toStringAsFixed(0)}%', maskType: EasyLoadingMaskType.clear);
              });

              break;
            case DataState.empty:
              // TODO: Handle this case.
              break;
            case DataState.complete:
              EasyLoading.dismiss();
              break;
          }
          viewState.consume = true;
        }

        return builder(context, viewState, child);
      },
      selector: (context) => selector(context, Provider.of(context)),
    );