Nav apraksta

index.tsx 1.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import * as React from 'react';
  2. import {
  3. requireNativeComponent,
  4. NativeSyntheticEvent,
  5. ViewStyle,
  6. StyleSheet,
  7. } from 'react-native';
  8. const NativeSafeAreaView = requireNativeComponent('RNCSafeAreaView');
  9. export interface EdgeInsets {
  10. top: number;
  11. right: number;
  12. bottom: number;
  13. left: number;
  14. }
  15. export interface SafeAreaViewProps {
  16. children: (insets: EdgeInsets) => React.ReactNode;
  17. style?: ViewStyle;
  18. }
  19. export default function SafeAreaView({ children, style }: SafeAreaViewProps) {
  20. const [insets, setInsets] = React.useState<EdgeInsets | null>(null);
  21. const onInsetsChange = React.useCallback(
  22. (event: NativeSyntheticEvent<{ insets: EdgeInsets }>) => {
  23. setInsets(event.nativeEvent.insets);
  24. },
  25. [],
  26. );
  27. console.warn(insets);
  28. return (
  29. <NativeSafeAreaView
  30. style={[styles.fill, style]}
  31. onInsetsChange={onInsetsChange}
  32. >
  33. {insets !== null ? children(insets) : null}
  34. </NativeSafeAreaView>
  35. );
  36. }
  37. const styles = StyleSheet.create({
  38. fill: { flex: 1 },
  39. });