yosadade

Router.js

Jul 3rd, 2020
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. import React from 'react';
  2. import {createStackNavigator, TransitionPresets} from '@react-navigation/stack';
  3. import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
  4. import {createDrawerNavigator} from '@react-navigation/drawer';
  5. import {NavigationContainer} from '@react-navigation/native';
  6.  
  7. import Ionicons from 'react-native-vector-icons/Ionicons';
  8. import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
  9. import Entypo from 'react-native-vector-icons/Entypo';
  10.  
  11. import AboutScreen from '../Tugas15/AboutScreen';
  12. import LoginScreen from '../Tugas15/LoginScreen';
  13. import ProfileScreen from '../Tugas15/ProfileScreen';
  14. import ProjectScreen from './ProjectScreen';
  15. import AddScreen from './AddScreen';
  16.  
  17. const Stack = createStackNavigator();
  18. const Tab = createBottomTabNavigator();
  19. const Drawer = createDrawerNavigator();
  20.  
  21. const MyDrawer = () => {
  22. return (
  23. <Drawer.Navigator>
  24. <Drawer.Screen name="MainApp" component={MainApp} />
  25. <Drawer.Screen name="AboutScreen" component={AboutScreen} />
  26. </Drawer.Navigator>
  27. );
  28. };
  29.  
  30. const MyStack = () => {
  31. return (
  32. <Stack.Navigator
  33. initialRouteName="LoginScreen"
  34. screenOptions={{
  35. headerShown: false,
  36. ...TransitionPresets.SlideFromRightIOS,
  37. }}>
  38. <Stack.Screen name="ProfileScreen" component={ProfileScreen} />
  39. <Stack.Screen name="LoginScreen" component={LoginScreen} />
  40. <Stack.Screen name="AboutScreen" component={AboutScreen} />
  41. <Stack.Screen name="MainApp" component={MainApp} />
  42. <Stack.Screen name="MyDrawer" component={MyDrawer} />
  43. </Stack.Navigator>
  44. );
  45. };
  46.  
  47. const MainApp = () => {
  48. return (
  49. <Tab.Navigator
  50. tabBarOptions={{
  51. activeTintColor: '#0BCAD4',
  52. style: {
  53. height: 60,
  54. backgroundColor: '#FFFFFF',
  55. },
  56. labelStyle: {
  57. fontSize: 12,
  58. marginBottom: 10,
  59. fontWeight: 'bold',
  60. },
  61. tabStyle: {
  62. marginTop: 10,
  63. },
  64. }}
  65. screenOptions={({route}) => ({
  66. tabBarIcon: ({color, size}) => {
  67. if (route.name === 'Project') {
  68. return (
  69. <MaterialCommunityIcons
  70. name="code-greater-than-or-equal"
  71. size={size}
  72. color={color}
  73. />
  74. );
  75. } else if (route.name === 'Add') {
  76. return <Ionicons name="ios-add-circle" size={size} color={color} />;
  77. } else if (route.name === 'About') {
  78. return <Entypo name="code" size={size} color={color} />;
  79. }
  80. },
  81. })}>
  82. <Tab.Screen name="Project" component={ProjectScreen} />
  83. <Tab.Screen name="Add" component={AddScreen} />
  84. <Tab.Screen name="About" component={AboutScreen} />
  85. </Tab.Navigator>
  86. );
  87. };
  88.  
  89. const Router = () => {
  90. return (
  91. <NavigationContainer>
  92. <MyStack />
  93. </NavigationContainer>
  94. );
  95. };
  96.  
  97. export default Router;
Add Comment
Please, Sign In to add comment