build method
Implementation
@override
Widget build(BuildContext context) {
final ticker = useSingleTickerProvider();
final controller = useMemoized(() => TabController(vsync: ticker, length: length), [length], (it) => it.dispose());
final wrappedIndex = useValueWrapper(index);
useEffect(() {
void listener() => wrappedIndex().value = controller.index;
controller.addListener(listener);
return () => controller.removeListener(listener);
});
useEffect(() {
if (index.value != controller.index) {
if (onTransition != null) {
onTransition!(controller, index.value);
} else {
controller.animateTo(index.value);
}
}
return null;
}, [index.value]);
return builder(controller);
}