response-native-fla sh с expo-barcode-scanner: ноль не является ошибкой объекта - PullRequest
0 голосов
/ 01 мая 2020

Я использую 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>
  );
};
...