Я пытался написать код для сканера QR-кода для моего проекта React Native (используя машинописный текст). Я следовал последней документации по экспо-камере, и хотя мой телефон запрашивает разрешение на использование камеры и компонент отображается без ошибок, камера моего телефона не включается.
Вот мой код компонента сканера QR-кода, следующий за документом:
import React, { useState, useEffect, useRef } from "react";
import { CameraView, useCameraPermissions } from "expo-camera";
import { View, Text, TouchableOpacity, Button } from "react-native";
import tw from "twrnc";
interface CameraFacing {
facing: "front" | "back";
}
const QrCodeScanner: React.FC = () => {
const [facing, setFacing] = useState<CameraFacing["facing"]>("back");
const [permission, requestPermission] = useCameraPermissions();
useEffect(() => {
if (!permission) return; // Skip if permission is still loading
if (permission.status !== "granted") {
// Request permission if not granted or undetermined
requestPermission();
}
}, [permission, requestPermission]);
if (!permission?.granted) {
// Camera permissions are not granted yet.
return (
<View style = {tw`flex-1 items-center justify-center`}>
<Text style = {tw`text-center`}>
We need your permission to show the camera
</Text>
<Button title = "grant permission" onPress = {requestPermission} />
</View>
);
}
const toggleCameraFacing = () => {
setFacing((current) => (current === "back" ? "front" : "back"));
};
return (
<View style = {tw`flex-1`}>
<CameraView style = {tw`flex-1`} facing = {facing}>
<View style = {tw`absolute bottom-0 right-0 pb-4 pr-4`}>
<TouchableOpacity
style = {tw`rounded-full bg-gray-500 p-2`}
onPress = {toggleCameraFacing}
>
<Text style = {tw`text-white text-lg`}>Flip Camera</Text>
</TouchableOpacity>
</View>
</CameraView>
</View>
);
};
export default QrCodeScanner;
Я пробовал всевозможные решения для этой проблемы, включая удаление модулей узлов и их повторную установку, но это не работает. Пожалуйста помоги.
Проблема была в коде стиля попутного ветра (центр элементов). Когда удалили, все заработало.