应用程序中有一个单独的页面,我在其中发布了 expo-barcode-scanner。最重要的是,当您打开相机所在的特定页面时,应用程序会立即崩溃。没有错误被打印到控制台。扫描仪本身的代码被取消了。文档。
其中:
- 不管我是通过“Camera”组件还是通过“BarCodeScanner”组件,它仍然会崩溃
- 如果您传入 onBarcodeScanned = undefined,则相机本身会工作并启动,但一旦 onBarcodeScanned = handleBarCodeScanned - 程序立即崩溃。
const AdminScreen = ({navigation}) => {
const [hasPermission, setHasPermission] = useState(null);
const [scanned, setScanned] = useState(true);
const [cameraReady, setCameraReady] = useState(false);
useEffect(() => {
(async () => {
const { status } = await BarCodeScanner.requestPermissionsAsync();
setHasPermission(status === 'granted');
})();
}, []);
const onCameraReady = () => {
setCameraReady(true)
console.warn("Camera ready")
}
const handleBarCodeScanned = ({ type, data }) => {
if (cameraReady){
setScanned(true);
alert(`Bar code with type ${type} and data ${data} has been scanned!`);
}
};
if (hasPermission === null) {
return <Text>Requesting for camera permission</Text>;
}
if (hasPermission === false) {
return <Text>No access to camera</Text>;
}
return (
<View
style={{
flex: 1,
resizeMode: 'cover',
}}>
<Camera
onCameraReady={onCameraReady}
barCodeTypes={[BarCodeScanner.Constants.BarCodeType.qr]}
onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
style={{
flex:1
}}
/>
{scanned && <Button title={'Tap to Scan Again'} onPress={() => setScanned(false)} />}
</View>
);
}
PS:我不排除错误尽可能明显和愚蠢,我一周前才开始学习react和js,我很容易错过一些东西