mirror of
https://github.com/zhigang1992/react-native-paper.git
synced 2026-06-11 00:08:51 +08:00
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
/* @flow */
|
|
|
|
import { KeepAwake } from 'expo';
|
|
import * as React from 'react';
|
|
import { StatusBar } from 'react-native';
|
|
import {
|
|
Provider as PaperProvider,
|
|
DarkTheme,
|
|
DefaultTheme,
|
|
} from 'react-native-paper';
|
|
import createReactContext from 'create-react-context';
|
|
import { createDrawerNavigator } from 'react-navigation';
|
|
import RootNavigator from './src/RootNavigator';
|
|
import DrawerItems from './DrawerItems';
|
|
import type { Theme } from 'react-native-paper/types';
|
|
|
|
type State = {
|
|
theme: Theme,
|
|
};
|
|
|
|
const ThemeToggleContext: any = createReactContext();
|
|
|
|
const App = createDrawerNavigator(
|
|
{ Home: { screen: RootNavigator } },
|
|
{
|
|
contentComponent: () => (
|
|
<ThemeToggleContext.Consumer>
|
|
{toggleTheme => <DrawerItems toggleTheme={toggleTheme} />}
|
|
</ThemeToggleContext.Consumer>
|
|
),
|
|
}
|
|
);
|
|
|
|
export default class PaperExample extends React.Component<{}, State> {
|
|
state = {
|
|
theme: DefaultTheme,
|
|
};
|
|
|
|
componentDidMount() {
|
|
StatusBar.setBarStyle('light-content');
|
|
}
|
|
|
|
_toggleTheme = () =>
|
|
this.setState(state => ({
|
|
theme: state.theme === DarkTheme ? DefaultTheme : DarkTheme,
|
|
}));
|
|
|
|
render() {
|
|
return (
|
|
<PaperProvider theme={this.state.theme}>
|
|
<ThemeToggleContext.Provider value={this._toggleTheme}>
|
|
<App />
|
|
</ThemeToggleContext.Provider>
|
|
<KeepAwake />
|
|
</PaperProvider>
|
|
);
|
|
}
|
|
}
|