import * as React from "react";
import {View} from 'react-native';
import {NavigationContainer} from "@react-navigation/native";
import {CardStyleInterpolators, createStackNavigator} from '@react-navigation/stack';
import {INavScreen, NavScreenData, NavScreenType, NavScreenTypeData} from "./nav";
import {loggerConfig} from "./config";
const logger = loggerConfig('Screen');
class Screen implements INavScreen {
private initialRouteName: string
private readonly list: NavScreenData[]
constructor(initialRouteName?: string) {
this.initialRouteName = initialRouteName ?? '';
this.list = [];
}
type: NavScreenType = {
default: 0,
fade: 1
};
set(pageName: string, component: any, type?: NavScreenTypeData): void {
type = typeof type === "undefined" ? this.type.default : type;
this.list.push({name: pageName, component, type});
}
setInitialRouteName(routeName: string): void {
this.initialRouteName = routeName;
}
end(): React.ReactNode {
if (this.initialRouteName.length === 0 || typeof this.initialRouteName !== "string") {
logger.err('end()', '未设置初始化页面,请执行 setInitialRouteName 方法');
return
}
const Stack = createStackNavigator();
return
({
// 不显示导航
headerShown: false,
cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS,
gestureEnabled: true,
})}
>
{
this.list.map((item, key) => {
let options = {};
if (item.type === 1) options = {
cardStyleInterpolator: ({current}) => ({
cardStyle: {
opacity: current.progress,
}
})
};
return
})
}
;
}
}
export default Screen
export type {
INavScreen, NavScreenData, NavScreenType, NavScreenTypeData
}