我想在我的 flutter 应用程序中使用设备的手电筒,以一定的时间间隔打开和关闭它,并且我正在寻找一种使用它的方法。
我在 pub.dev 上找到的所有软件包目前都不兼容 dart 3,所以我想知道您知道是否有其他软件包可以帮助我解决这个问题,或者我是否可以在没有软件包的情况下以某种方式做到这一点?
谢谢
有几个包(兼容 Dart 3)用于使用设备的手电筒,如下:
torch_controller 用于切换手电筒、检查手电筒状态等
torch_light 用于管理设备火炬
您还可以使用类
android.hardware.camera2.CameraManager
来访问Android
的火炬。
使用相机依赖项:
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
class CameraFlashLightScreen extends StatefulWidget {
const CameraFlashLightScreen({super.key});
@override
State<CameraFlashLightScreen> createState() => _CameraFlashLightScreenState();
}
class _CameraFlashLightScreenState extends State<CameraFlashLightScreen> {
late CameraController cameraController;
late Future<void> cameraInitializeFuture;
late bool _isFlashOn = false;
@override
void initState() {
super.initState();
cameraInitializeFuture = initializeCamera();
}
Future<void> initializeCamera() async {
final cameras = await availableCameras();
final backCamera = cameras.firstWhere(
(camera) => camera.lensDirection == CameraLensDirection.back,
orElse: () => cameras.first,
);
cameraController = CameraController(
backCamera,
ResolutionPreset.low,
);
await cameraController.initialize();
}
Future<void> toggleFlashLight() async {
try {
if (_isFlashOn) {
await cameraController.setFlashMode(FlashMode.off);
} else {
await cameraController.setFlashMode(FlashMode.torch);
}
setState(() {
_isFlashOn = !_isFlashOn;
});
} catch (e) {}
}
@override
void dispose() {
cameraController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flashlight App'),
),
body: FutureBuilder<void>(
future: cameraInitializeFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Center(
child: ElevatedButton(
onPressed: toggleFlashLight,
child: Text(
_isFlashOn ? 'Turn Off Flashlight' : 'Turn On Flashlight'),
),
);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
),
);
}
}