-
Notifications
You must be signed in to change notification settings - Fork 471
Expand file tree
/
Copy pathMaterialTopTabExample.tsx
More file actions
90 lines (80 loc) · 2.25 KB
/
MaterialTopTabExample.tsx
File metadata and controls
90 lines (80 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import React, { useState } from 'react';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
import { View, Text, Button } from 'react-native';
function Tab1() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Tab 1</Text>
</View>
);
}
function Tab2(props: any) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Button title="Logout" onPress={props.onLogout} />
</View>
);
}
const PreAuthScreen = (props: any) => {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button title="Login" onPress={() => props.setIsSignedIn(true)} />
</View>
);
};
function Tab3() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Tab 3</Text>
</View>
);
}
function Tab4() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Tab 4</Text>
</View>
);
}
const PostAuthScreen = (props: any) => {
const { Navigator, Screen } = createMaterialTopTabNavigator();
const onLogout = () => {
setTimeout(() => {
props.setIsSignedIn(false);
}, 0);
};
return (
<View style={{ flex: 1 }}>
<Navigator>
<Screen name="Tab1" component={Tab1} />
<Screen name="Tab2">
{(props: any) => <Tab2 {...props} onLogout={onLogout} />}
</Screen>
<Screen name="Tab3" component={Tab3} />
<Screen name="Tab4" component={Tab4} />
</Navigator>
</View>
);
};
export function MaterialTopBarExample() {
const { Screen, Navigator } = createNativeStackNavigator();
const [isSignedIn, setIsSignedIn] = useState(false);
return (
<Navigator>
{!isSignedIn ? (
<Screen name="Pre Auth Screen">
{(props: any) => (
<PreAuthScreen {...props} setIsSignedIn={setIsSignedIn} />
)}
</Screen>
) : (
<Screen name="Post Auth Screen">
{(props: any) => (
<PostAuthScreen {...props} setIsSignedIn={setIsSignedIn} />
)}
</Screen>
)}
</Navigator>
);
}