fix: workaround SafereaProvider causing jumping

see #174
This commit is contained in:
Satyajit Sahoo
2019-11-16 19:41:42 +01:00
parent 31b8819e17
commit c17ad18b20
6 changed files with 88 additions and 13 deletions

View File

@@ -0,0 +1,26 @@
import * as React from 'react';
import {
SafeAreaProvider,
SafeAreaConsumer,
} from 'react-native-safe-area-context';
type Props = {
children: React.ReactNode;
};
export default function SafeAreaProviderCompat({ children }: Props) {
return (
<SafeAreaConsumer>
{insets => {
if (insets) {
// If we already have insets, don't wrap the stack in another safe area provider
// This avoids an issue with updates at the cost of potentially incorrect values
// https://github.com/react-navigation/navigation-ex/issues/174
return children;
}
return <SafeAreaProvider>{children}</SafeAreaProvider>;
}}
</SafeAreaConsumer>
);
}

View File

@@ -1,10 +1,6 @@
import * as React from 'react';
import { Platform } from 'react-native';
import {
SafeAreaProvider,
SafeAreaConsumer,
EdgeInsets,
} from 'react-native-safe-area-context';
import { SafeAreaConsumer, EdgeInsets } from 'react-native-safe-area-context';
import { Route } from '@react-navigation/core';
import { StackActions, StackNavigationState } from '@react-navigation/routers';
@@ -12,6 +8,7 @@ import Stack from './Stack';
import HeaderContainer, {
Props as HeaderContainerProps,
} from '../Header/HeaderContainer';
import SafeAreaProviderCompat from '../SafeAreaProviderCompat';
import {
StackNavigationHelpers,
StackNavigationConfig,
@@ -328,7 +325,7 @@ class StackView extends React.Component<Props, State> {
mode !== 'modal' && Platform.OS === 'ios' ? 'float' : 'screen';
return (
<SafeAreaProvider>
<SafeAreaProviderCompat>
<SafeAreaConsumer>
{insets => (
<Stack
@@ -355,7 +352,7 @@ class StackView extends React.Component<Props, State> {
/>
)}
</SafeAreaConsumer>
</SafeAreaProvider>
</SafeAreaProviderCompat>
);
}
}