gpt4 book ai didi

flutter - 为 future 的可用相机列表初始化相机

转载 作者:行者123 更新时间:2023-12-05 08:45:25 25 4
gpt4 key购买 nike

我正在使用直接从 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)),

),

最佳答案

您可以创建一种单例来管理相机操作。

class CameraManager {
// Declare your camera list here
List<CameraDescription> _cameras = <CameraDescription>[];

// Constructor
CameraManager._privateConstructor() {}

// initialise instance
static final CameraManager instance =
CameraManager._privateConstructor();

// Add a getter to access camera list
List<CameraDescription> get cameras => _cameras;

// Init method
init() async {
try {
_cameras = await availableCameras();
} on CameraException catch (e) {
_logError(e.code, e.description);
}
}

// other needed methods to manage camera
...
}

然后在你的main函数中

Future<void> main() async {
// Fetch the available cameras before initializing the app.
try {
WidgetsFlutterBinding.ensureInitialized();
await CameraManager.instance.init();
}
runApp(const CameraApp());
}

然后在应用程序的其他部分,您可以使用 CameraManager.instance.* 导入单例和访问方法和属性,例如 CameraManager.instance.cameras 访问_cameras 通过 getter。

关于flutter - 为 future 的可用相机列表初始化相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72860060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com