import React, {Component} from 'react'; import TitleBar from '../views/TitleBar'; import ListItem from '../views/ListItem'; import ListItemDivider from '../views/ListItemDivider'; import StorageUtil from '../utils/StorageUtil'; import CommonLoadingView from '../views/CommonLoadingView'; import CountEmitter from '../event/CountEmitter'; import Global from '../utils/Global'; import Utils from '../utils/Utils'; import Toast from '@remobile/react-native-toast'; import { Dimensions, Image, PixelRatio, ScrollView, StyleSheet, Text, TouchableHighlight, TouchableOpacity, View } from 'react-native'; const {width} = Dimensions.get('window'); export default class MeScreen extends Component { static navigationOptions = { tabBarLabel: '我', tabBarIcon: ({focused, tintColor}) => { if (focused) { return ( ); } return ( ); }, }; constructor(props) { super(props); this.state = { username: '', loadingState: Global.loading, }; this.loadUserInfo(); } loadUserInfo() { StorageUtil.get('username', (error, object) => { if (!error && object != null) { let username = object.username; this.setState({username: username}); let userInfoKey = 'userInfo-' + username; StorageUtil.get(userInfoKey, (error, object) => { if (!error && object != null) { this.setState({userInfo: object.info}); this.setState({loadingState: Global.loadSuccess}); } else { this.setState({loadingState: Global.loadError}); } }) } else { this.setState({loadingState: Global.loadError}); } }); } componentWillMount() { CountEmitter.addListener('updateAvatar', () => { // 刷新头像 this.loadUserInfo(); }); CountEmitter.addListener('updateUserInfo', () => { // 刷新用户数据 this.loadUserInfo(); }); } componentWillUnmount() { CountEmitter.removeListener('updateAvatar', ()=>{}); CountEmitter.removeListener('updateUserInfo', ()=>{}); } render() { switch (this.state.loadingState) { case Global.loading: return this.renderLoadingView(); case Global.loadSuccess: return this.renderDetailView(); case Global.loadError: return this.renderErrorView(); } } renderLoadingView() { return ( ); } renderErrorView() { return ( this.loadUserInfo()}> 加载用户数据失败 点击屏幕重试 ); } renderDetailView() { let avatar = require('../../images/avatar.png'); if (!Utils.isEmpty(this.state.userInfo) && !Utils.isEmpty(this.state.userInfo.avatar)) { avatar = {uri: this.state.userInfo.avatar}; } return ( { this.turnOnPage('PersonInfo', {userInfo: this.state.userInfo}) }}> {this.state.username} {"昵称:" + this.state.userInfo.nick} { this.turnOnPage('Moment') }}/> { this.turnOnPage('CardPackage') }}/> { this.turnOnPage('Settings') }}/> ); } turnOnPage(pageName, params) { if (Utils.isEmpty(params)) { this.props.navigation.navigate(pageName); } else { this.props.navigation.navigate(pageName, params); } } } const styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'column', justifyContent: 'center', alignItems: 'center' }, divider: { width: width, height: 1 / PixelRatio.get(), backgroundColor: '#D3D3D3' }, content: { flex: 1, width: width, flexDirection: 'column', backgroundColor: Global.pageBackgroundColor, }, tabBarIcon: { width: 24, height: 24, }, meInfoContainer: { width: width, flexDirection: 'row', alignItems: 'center', paddingLeft: 15, paddingRight: 15, backgroundColor: '#FFFFFF', paddingTop: 10, paddingBottom: 10, }, meInfoAvatar: { width: 60, height: 60, }, meInfoTextContainer: { flex: 1, paddingLeft: 15, paddingRight: 15, }, meInfoNickName: { color: '#000000', fontSize: 16, }, meInfoWeChatId: { color: '#999999', fontSize: 14, marginTop: 5, }, meInfoQRCode: { width: 25, height: 25, } });