使用另一个列表的值 class

Use values of a list form another class

我正在尝试从我正在处理的设备中获取可用的摄像头。

为此我正在使用 final cameras = await availableCameras(); 它 returns 我有一个包含多个 'CameraDescriptions'.

的列表

然后我希望将列表交给另一个 class 实际使用它来激活相机。目前看起来像这样:

class TakePicturePage extends StatefulWidget {
  final CameraDescription cameras;
  TakePicturePage({@required this.cameras});

  @override
  _TakePicturePageState createState() => _TakePicturePageState();
}

class _TakePicturePageState extends State<TakePicturePage> {

  var usedcamera = cameras[0]; //not accepting the first value of 'cameras'

  CameraController _cameraController;    
  Future<void> _initializeCameraControllerFuture;
  @override
  void initState() {
    super.initState();

      _cameraController =
          CameraController(widget.usedcamera, ResolutionPreset.veryHigh);


    _initializeCameraControllerFuture = _cameraController.initialize();

  }

我面临的问题是 'cameras' 的第一个值无法分配给变量 'usedcamera'。该错误甚至告诉我 'cameras' 未定义。但是我不是已经用 TakePicturePage({@required this.cameras});

定义了吗

顺便说一句,我从中获取列表 'cameras' 的函数如下所示:

void _showCamera() async {
    final cameras = await availableCameras();
    print(cameras);

    final result = await Navigator.push(
        context,
        MaterialPageRoute(
            builder: (context) => TakePicturePage(cameras: cameras)));

所以,我正在尝试使用 Navigator.push

推送数据

提前感谢您的回答!

在下面的代码中:

_cameraController = CameraController(widget.usedcamera, ResolutionPreset.veryHigh);

要访问特定相机的值,您应该执行类似

的操作
_cameraController = CameraController(widget.cameras[0].usedcamera, ResolutionPreset.veryHigh);

直接访问传入列表中的摄像机。

希望对您有所帮助!如果这有效,请告诉我。

编辑:

要给变量赋值,试试var usedcamera = widget.cameras[0]; widget关键字用来访问StatefulWidget传递的列表里面的State class.