buildWithDesignSystem<Payload, Result> static method

Widget buildWithDesignSystem<Payload, Result>({
  1. required SmartRepository<Payload, Result> repository,
  2. required Widget success(
    1. BuildContext,
    2. Result
    ),
  3. WidgetBuilder? loading,
  4. WidgetBuilder? fail,
  5. WidgetBuilder? initial,
  6. ComponentInitialAction<Payload> initialAction = const ComponentInitialAction.none(),
  7. SmartController<Payload, Result>? controller,
  8. dynamic listener(
    1. BuildContext,
    2. SmartState<Result>
    )?,
})

Implementation

static Widget buildWithDesignSystem<Payload, Result>({
  required SmartRepository<Payload, Result> repository,
  required Widget Function(BuildContext, Result) success,
  WidgetBuilder? loading,
  WidgetBuilder? fail,
  WidgetBuilder? initial,
  ComponentInitialAction<Payload> initialAction = const ComponentInitialAction.none(),
  SmartController<Payload, Result>? controller,
  Function(BuildContext, SmartState<Result>)? listener,
}) {
  return SmartFeatureBuilder.build<Payload, Result>(
    repository: repository,
    initialAction: initialAction,
    controller: controller,
    listener: listener,
    builder: (context, state) {
      return state.when(
        // `TODO`(Matias): Replace widgets with design system widgets
        initial: () => initial?.call(context) ?? const Center(child: Text('Press to submit data')),
        loading: (_, __) => loading?.call(context) ?? const CircularProgressIndicator.adaptive(),
        fail: (_) => fail?.call(context) ?? const Center(child: Text('Failed to submit data')),
        success: (data) => success(context, data),
      );
    },
  );
}