1*e650bfb3S猫头猫import React from 'react'; 2*e650bfb3S猫头猫import {StyleProp, StyleSheet, View, ViewProps} from 'react-native'; 3*e650bfb3S猫头猫import rpx from '@/utils/rpx'; 4*e650bfb3S猫头猫import useColors from '@/hooks/useColors'; 5*e650bfb3S猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; 6*e650bfb3S猫头猫import {TouchableOpacity} from 'react-native-gesture-handler'; 7*e650bfb3S猫头猫 8*e650bfb3S猫头猫interface ICheckboxProps { 9*e650bfb3S猫头猫 checked?: boolean; 10*e650bfb3S猫头猫 onPress?: () => void; 11*e650bfb3S猫头猫 style?: StyleProp<ViewProps>; 12*e650bfb3S猫头猫} 13*e650bfb3S猫头猫 14*e650bfb3S猫头猫const slop = rpx(24); 15*e650bfb3S猫头猫 16*e650bfb3S猫头猫export default function Checkbox(props: ICheckboxProps) { 17*e650bfb3S猫头猫 const {checked, onPress, style} = props; 18*e650bfb3S猫头猫 const colors = useColors(); 19*e650bfb3S猫头猫 20*e650bfb3S猫头猫 const innerNode = ( 21*e650bfb3S猫头猫 <View 22*e650bfb3S猫头猫 style={[ 23*e650bfb3S猫头猫 styles.container, 24*e650bfb3S猫头猫 checked 25*e650bfb3S猫头猫 ? { 26*e650bfb3S猫头猫 backgroundColor: colors.primary, 27*e650bfb3S猫头猫 borderColor: colors.primary, 28*e650bfb3S猫头猫 } 29*e650bfb3S猫头猫 : { 30*e650bfb3S猫头猫 borderColor: colors.text, 31*e650bfb3S猫头猫 }, 32*e650bfb3S猫头猫 style, 33*e650bfb3S猫头猫 ]}> 34*e650bfb3S猫头猫 {checked ? ( 35*e650bfb3S猫头猫 <Icon name="check" color={colors.headerText} size={rpx(34)} /> 36*e650bfb3S猫头猫 ) : null} 37*e650bfb3S猫头猫 </View> 38*e650bfb3S猫头猫 ); 39*e650bfb3S猫头猫 40*e650bfb3S猫头猫 return onPress ? ( 41*e650bfb3S猫头猫 <TouchableOpacity 42*e650bfb3S猫头猫 hitSlop={{ 43*e650bfb3S猫头猫 left: slop, 44*e650bfb3S猫头猫 right: slop, 45*e650bfb3S猫头猫 top: slop, 46*e650bfb3S猫头猫 bottom: slop, 47*e650bfb3S猫头猫 }} 48*e650bfb3S猫头猫 onPress={onPress}> 49*e650bfb3S猫头猫 {innerNode} 50*e650bfb3S猫头猫 </TouchableOpacity> 51*e650bfb3S猫头猫 ) : ( 52*e650bfb3S猫头猫 innerNode 53*e650bfb3S猫头猫 ); 54*e650bfb3S猫头猫} 55*e650bfb3S猫头猫 56*e650bfb3S猫头猫const styles = StyleSheet.create({ 57*e650bfb3S猫头猫 container: { 58*e650bfb3S猫头猫 width: rpx(36), 59*e650bfb3S猫头猫 height: rpx(36), 60*e650bfb3S猫头猫 borderRadius: rpx(2), 61*e650bfb3S猫头猫 borderWidth: rpx(1), 62*e650bfb3S猫头猫 alignItems: 'center', 63*e650bfb3S猫头猫 justifyContent: 'center', 64*e650bfb3S猫头猫 }, 65*e650bfb3S猫头猫}); 66