Я использую expo-barcode-scanner. Над этим я бы разрешил использовать факел, поэтому я импортировал реактив-native-fla sh. Я получил разрешения от expo-barcode-scanner, но когда я нажимаю на fla sh ligh: error, скажем: TypeError: null не является объектом (оценивает '_reactNativeFla sh .default.hasFla sh') самостоятельно Android Смартфон. Не могли бы вы помочь мне, пожалуйста?
//TORCHBUTTON COMPONENT
import React, { useState } from "react";
import { StyleSheet, TouchableOpacity } from "react-native";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import RNFlash from "react-native-flash";
const TorchButton = () => {
const [torchOn, setTorchOn] = useState(false);
const useFlash = () => {
RNFlash.hasFlash(
function () {
if (torchOn) RNFlash.turnOffFlash();
else RNFlash.turnOnFlash();
},
function () {
alert("You do not have flash");
}
);
};
return (
<TouchableOpacity
style={styles.flashButton}
onPress={() => {
if (torchOn) setTorchOn(false);
else setTorchOn(true);
useFlash();
}}
>
{torchOn ? (
<MaterialCommunityIcons name="flashlight-off" size={40} color="black" />
) : (
<MaterialCommunityIcons name="flashlight" size={40} color="black" />
)}
</TouchableOpacity>
);
};
//CAMERASCREEN
//to use Camera
import { BarCodeScanner } from "expo-barcode-scanner";
//components
import TorchButton from "../components/TorchButton";
const Camera = () => {
const [hasPermission, setHasPermission] = useState(null);
const [scanned, setScanned] = useState(false);
const [productData, setProductData] = useState();
useEffect(() => {
(async () => {
const { status } = await BarCodeScanner.requestPermissionsAsync();
setHasPermission(status === "granted");
})();
}, []);
const handleBarCodeScanned = ({ type, data }) => {
setScanned(true);
setProductData(data);
};
return (
<View style={styles.cameraContainer}>
<BarCodeScanner
onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
style={StyleSheet.absoluteFillObject}
/>
<TorchButton />
</View>
);
};