Closed periakteon closed 1 month ago
Try this:
diff --git a/packages/reusables/src/components/ui/switch.tsx b/packages/reusables/src/components/ui/switch.tsx
index b9d136c..a7eb9e6 100644
--- a/packages/reusables/src/components/ui/switch.tsx
+++ b/packages/reusables/src/components/ui/switch.tsx
@@ -4,7 +4,7 @@ import { Platform } from 'react-native';
import Animated, {
interpolateColor,
useAnimatedStyle,
- useDerivedValue,
+ useSharedValue,
withTiming,
} from 'react-native-reanimated';
import { useColorScheme } from '../../lib/useColorScheme';
@@ -51,7 +51,7 @@ const SwitchNative = React.forwardRef<
React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>
>(({ className, ...props }, ref) => {
const { colorScheme } = useColorScheme();
- const translateX = useDerivedValue(() => (props.checked ? 18 : 0));
+ const translateX = useSharedValue(props.checked ? 18 : 0);
const animatedRootStyle = useAnimatedStyle(() => {
return {
backgroundColor: interpolateColor(
@@ -62,8 +62,13 @@ const SwitchNative = React.forwardRef<
};
});
const animatedThumbStyle = useAnimatedStyle(() => ({
- transform: [{ translateX: withTiming(translateX.value, { duration: 200 }) }],
+ transform: [{ translateX: translateX.value }],
}));
+
+ React.useEffect(() => {
+ translateX.value = withTiming(props.checked ? 18 : 0);
+ }, [props.checked]);
+
return (
<Animated.View
style={animatedRootStyle}
Describe the bug The switch button has a visual bug after a few on-offs.
To Reproduce Steps to reproduce the behavior:
Expected behavior Colors should render properly according to the on-off value.
Screenshots
Platform (please complete the following information):
Additional context
VIDEO (CLICK TO PLAY)
The folder structure of the application is as follows:
(root) _layout.tsx
(protected) _layout.tsx
:profile.tsx
:BONUS:
SettingsProvider.tsx
: