Невозможно получить доступ к галерее и делать сообщения - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь опубликовать фотографии и текстовые сообщения на своем HomeScreen. js, отредактировав его на PostScreen. js. Однако всякий раз, когда я нажимаю изображение галереи, ничего не происходит, и то же самое происходит, когда я нажимаю «Опубликовать». Я проверял это снова и снова, и я просто не могу понять, что я делаю неправильно.

Это мое PostScreen.js

import React from 'react';
import {View, Text, StyleSheet, SafeAreaView, TouchableOpacity, Image, TextInput} from 'react-native';
import {Ionicons} from '@expo/vector-icons';
import Constants from 'expo-constants';
import * as Permissions from 'expo-permissions';
import * as ImagePicker from 'expo-image-picker';
import Fire from '../Fire';
import {PermissionsAndroid} from 'react-native';

const firebase = require('firebase');
require('firebase/firestore');

export default class PostScreen extends React.Component {
state = {
    text: '',
    image: null
};

componentDidMount() {
    this.requestCameraPermission();
}

requestCameraPermission = async () => {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log('You can access the external storage');
      } else {
        console.log('Camera permission denied');
      }
    } catch (err) {
      console.warn(err);
    }
};

pickImage = async () => {
    ImagePicker.launchImageLibrary({aspect: [4, 3], mediaType: 'photo'}, (response) => {
        console.log('Response =', response);
        if (response.didCancel) {
            console.log('User cancelled image picker');
          } else if (response.error) {
            console.log('ImagePicker Error: ', response.error);
          } else if (response.customButton) {
            console.log('User tapped custom button: ', response.customButton);
          } else {
            const source = { uri: response.uri };
        this.setState({
            image: response.uri,
        });
        }
    });
}

handlePost = () => {
    Fire.shared.addPost({ text: this.state.text.toString(), localUri: this.state.image}).then(ref => {
        this.setState({ text: '', image: null});
        this.props.navigation.goBack();
    }).catch(error => {
        alert(error);
    });
};

render() {
    return(
        <SafeAreaView style={styles.container}>
            <View style={styles.header}>
                <TouchableOpacity onPress={() => this.props.navigation.goBack()}>
                    <Ionicons name='md-arrow-round-back' size={24} color='black'></Ionicons>
                </TouchableOpacity>
                <TouchableOpacity onPress={this.handlePost}>
                    <Text style={{fontWeight: '500'}}>Post</Text>
                </TouchableOpacity>
            </View> 

            <View style={styles.inputContainer}>
                <Image source={require('../assets/ALPHA.png')} style={styles.avatar}/>
                <TextInput autoFocus={true} multiline={true}  numberOfLines={4} style={{flex:1}} placeholder='O que vais partilhar?' onChangeText={text => this.setState({text})} value={this.state.text}/>
            </View>

            <TouchableOpacity style={styles.photo} onPres={this.pickImage}>
                <Ionicons name='md-camera' size={32} color='#FFA200'></Ionicons>
            </TouchableOpacity>

            <View style={{marginHorizontal: 32, marginTop:32, height: 150}}>
                <Image source={{uri: this.state.image}} style={{width: '100%', height: '100%'}}></Image>
            </View>
        </SafeAreaView>
    );
}
}

Не могли бы вы мне помочь?

1 Ответ

0 голосов
/ 09 апреля 2020

Проблема в вашем коде:

<TouchableOpacity style={styles.photo} onPres={this.pickImage}>
            <Ionicons name='md-camera' size={32} color='#FFA200'></Ionicons>
        </TouchableOpacity>

Здесь есть исправление, которое вы только что написали с ошибкой. Нажмите, чтобы изменить его, и проверьте

Надеюсь, это поможет!

...