build method

  1. @override
Widget build(
  1. BuildContext context
)
override

Implementation

@override
Widget build(BuildContext context) {
  final controller = useMemoized(() => controllerProvider(initialPage: index.value), [], (it) => it.dispose());

  final wrappedIndex = useValueWrapper(index);
  useEffect(() {
    void listener() {
      if (controller.page != null) {
        wrappedIndex().value = controller.page!.round();
      }
    }

    controller.addListener(listener);
    return () => controller.removeListener(listener);
  });

  useEffect(() {
    if (controller.hasClients && controller.page?.round() != index.value) {
      if (onTransition != null) {
        onTransition!(controller, index.value);
      } else {
        controller.jumpToPage(index.value);
      }
    }
    return null;
  }, [controller.hasClients, index.value]);

  return builder(controller);
}