import * as React from 'react';
import { StyleSheet, FlatList, ListRenderItem } from 'react-native';
import { RouteViewPortal, RouteContentProps, NavigatorView, RouteViewEvents, NavRoutesConfigMap } from 'react-native-ios-navigator';
import { EventListItem } from './EventListItem';
import { RouteA } from './RouteA';
import { RouteB } from './RouteB';
import type { EventData, RecordEvent, RouteProps } from './SharedTypes';
export const RouteKeys = {
RouteA: 'RouteA',
RouteB: 'RouteB',
};
const ROUTES: NavRoutesConfigMap = {
[RouteKeys.RouteA]: {
routeOptionsDefault: {
largeTitleDisplayMode: 'never',
},
renderRoute: () => (
),
},
[RouteKeys.RouteB]: {
routeOptionsDefault: {
largeTitleDisplayMode: 'never',
},
renderRoute: () => (
),
},
};
type NavigatorTest08State = {
events: Array;
};
export class NavigatorTest08 extends React.Component {
constructor(props: RouteContentProps){
super(props);
this.state = {
events: [],
};
};
recordEvent: RecordEvent = (event) => {
this.setState((prevState) => ({
events: [event, ...prevState.events],
}));
};
_handleKeyExtractor = (item: EventData) => {
return `${item.timestamp}`;
};
_renderEventListItem: ListRenderItem = ({item, index}) => {
const { events } = this.state;
const eventCount = events.length;
return(
);
};
render(){
const sharedRouteProps: RouteProps = {
recordEvent: this.recordEvent,
};
return(
{
this.setState({
events: [],
});
}}
/>
{
this.recordEvent({
eventType: 'onNavRouteWillShow',
routeKey: nativeEvent.routeKey,
routeIndex: nativeEvent.routeIndex,
timestamp: Date.now(),
});
}}
onNavRouteDidShow={({nativeEvent}) => {
this.recordEvent({
eventType: 'onNavRouteDidShow',
routeKey: nativeEvent.routeKey,
routeIndex: nativeEvent.routeIndex,
timestamp: Date.now(),
});
}}
/>
);
};
};
const styles = StyleSheet.create({
list: {
flex: 1,
},
listContentContainer: {
paddingVertical: 10,
paddingHorizontal: 10,
},
bottomNavigator: {
flex: 1,
},
});