2026.6.5 二维码扫码提示问题
parent
547325941a
commit
3269868f83
|
|
@ -30,14 +30,20 @@ class ScanPage extends StatefulWidget {
|
||||||
class _ScanPageState extends State<ScanPage> {
|
class _ScanPageState extends State<ScanPage> {
|
||||||
final MobileScannerController _controller = MobileScannerController();
|
final MobileScannerController _controller = MobileScannerController();
|
||||||
bool _torchOn = false;
|
bool _torchOn = false;
|
||||||
|
bool _hasPermission = true; // 默认有权限
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
|
// 监听 controller 的状态变化
|
||||||
|
_controller.addListener(_onControllerStateChange);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
_controller.removeListener(_onControllerStateChange); // 移除监听
|
||||||
_controller.dispose();
|
_controller.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
@ -72,6 +78,27 @@ class _ScanPageState extends State<ScanPage> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 监听权限状态变化
|
||||||
|
void _onControllerStateChange() {
|
||||||
|
final error = _controller.value.error;
|
||||||
|
|
||||||
|
if (error != null && mounted) {
|
||||||
|
// 检查是否是权限被拒绝的错误
|
||||||
|
if (error.errorCode == MobileScannerErrorCode.permissionDenied) {
|
||||||
|
setState(() {
|
||||||
|
_hasPermission = false;
|
||||||
|
});
|
||||||
|
print('相机权限被拒绝');
|
||||||
|
}
|
||||||
|
} else if (_controller.value.isRunning && mounted) {
|
||||||
|
// 如果相机正在运行,说明有权限
|
||||||
|
setState(() {
|
||||||
|
_hasPermission = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 人脸识别跳转
|
// 人脸识别跳转
|
||||||
void goToFace(Map<String, dynamic> stuInfo) async {
|
void goToFace(Map<String, dynamic> stuInfo) async {
|
||||||
print('navigate to face with $stuInfo');
|
print('navigate to face with $stuInfo');
|
||||||
|
|
@ -234,6 +261,33 @@ class _ScanPageState extends State<ScanPage> {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
|
// 权限遮罩 - 放在最上层覆盖所有内容
|
||||||
|
if (!_hasPermission)
|
||||||
|
Container(
|
||||||
|
color: Colors.black,
|
||||||
|
child: const Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(Icons.camera_alt, color: Colors.white, size: 64),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
Text(
|
||||||
|
'需要相机权限才能使用扫码功能',
|
||||||
|
style: TextStyle(color: Colors.white, fontSize: 16),
|
||||||
|
),
|
||||||
|
SizedBox(height: 10),
|
||||||
|
Text(
|
||||||
|
'请在设置中允许相机权限',
|
||||||
|
style: TextStyle(color: Colors.white70, fontSize: 14),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue