我使用的代码是直接从www.example.com获得pub.dev,用于初始化摄像头和创建可用摄像头列表
这个列表是在Future main()函数中创建的,但是当我导航到CameraApp页面时,它没有被自动调用。有人遇到过这个问题吗?当我导航到这个代码的页面时,我如何初始化相机并创建可用相机的列表?请帮助,谢谢。
/// CameraApp is the Main Application.
class CameraApp extends StatelessWidget {
/// Default Constructor
const CameraApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: CameraExampleHome(),
);
}
}
List<CameraDescription> _cameras = <CameraDescription>[];
Future<void> main() async {
// Fetch the available cameras before initializing the app.
try {
WidgetsFlutterBinding.ensureInitialized();
_cameras = await availableCameras();
} on CameraException catch (e) {
_logError(e.code, e.description);
}
runApp(const CameraApp());
}
这是我从按钮中调用CameraApp函数的代码:
ElevatedButton(
onPressed: ()
{Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CameraApp()));},
child: const Text('Camera'),
style: ElevatedButton.styleFrom(
minimumSize: const Size(160.0, 35.0)),
),
4条答案
按热度按时间46qrfjad1#
您可以创建一种单例来管理摄像机操作。
然后在主函数中
然后,在应用程序的其他部分,您可以导入单例并使用
CameraManager.instance.*
访问方法和属性,例如CameraManager.instance.cameras
通过getter访问_cameras
。qyzbxkaa2#
这里有几件事需要考虑..您所做的实现是正确的,但是您将摄像头命名为私有变量,通过添加_ like _camera可以在单个dart文件中访问该变量。删除该变量将使其在所有类中全局可用,只需导入main.dart即可
下面是完整的代码
主省道
照相机示例Home.dart
v1l68za43#
可以为全局变量创建库文件。
在lib文件夹中创建名为“globals.dart”的文件。
在顶部声明以下行。
然后在其中设置变量
主要用途
然后只需在项目中的任何位置使用该变量即可。
f1tvaqid4#
如下声明CameraDescription全局示例列表:
现在,您可以通过导入main来访问camera示例。dart,_ always将示例变量设置为private,该变量在文件外部不可访问