build method
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);
}