пакет camera, не переключается камера с задней на фронтальную

По умолчанию, камера установлена на заднюю.

CameraDescription _cameraDescription = cameras[0];

Функция должна перелючать камеры

//метод переключает камеры
 void _funChoiceCameras(int id) {
  setState(() {
   switch(id) {
    case 0:
     _cameraDescription = cameras[0];
     _idCameras = 0;
     break;
    case 1:
     _cameraDescription = cameras[1];
     _idCameras = 1;
     break;
   }
  });
 }

Но не переключается камера с задней на фронтальную и обратно. Далее полный код и скриншот.

main.dart

import 'package:flutter/material.dart';

import 'package:camera/camera.dart';

List<CameraDescription> cameras = [];

Future<void> main() async {
 WidgetsFlutterBinding.ensureInitialized();
 cameras = await availableCameras();
 runApp(MyApp());
}

class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
  return MaterialApp(
   debugShowCheckedModeBanner: false,
   title: 'Name App',
   theme: ThemeData(
    primarySwatch: Colors.blue,
   ),
   home: Scaffold(
    appBar: AppBar(
     title: Text('Name Page'),
    ),
    body: MyHomePage(),
   ),
  );
 }
}

class MyHomePage extends StatefulWidget {
 @override
 _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

 CameraController _cameraController;
 CameraDescription _cameraDescription = cameras[0];
 int _idCameras = 0;

 @override
 void initState() {
  super.initState();
  _setCameraController(_cameraDescription);

 }

 @override
 void dispose() {
  super.dispose();
  _cameraController.dispose();

 }

 void _f1() {
  setState(() {

  });
 }

 Future<void> _setCameraController(CameraDescription cameraDescription) async {

  _cameraController = CameraController(
   cameraDescription,
   ResolutionPreset.max
  )..initialize().then((_) {
   if (!mounted) {
    return;
   }
   setState(() {});
  });

 }

 //метод переключает камеры
 void _funChoiceCameras(int id) {
  setState(() {
   switch(id) {
    case 0:
     _cameraDescription = cameras[0];
     _idCameras = 0;
     break;
    case 1:
     _cameraDescription = cameras[1];
     _idCameras = 1;
     break;
   }
  });
 }

 @override
 Widget build(BuildContext context) {

  if(!_cameraController.value.isInitialized) {
   return Container();
  }

  return Column(
   children: [
    Expanded(
     flex: 1,
     child: Container(
      width: MediaQuery.of(context).size.width,
      child: CameraPreview(_cameraController),
     ),
    ),
    Row(
     mainAxisAlignment: MainAxisAlignment.spaceAround,
     children: [
      TextButton(
       onPressed: () { _funChoiceCameras(0); },
       child: Container(
        width: 75.0,
        height: 50.0,
        decoration: BoxDecoration(
         border: Border.all(
          width: 2.0,
          color: (_idCameras == 0) ? Colors.pink : Colors.grey,
         ),
         borderRadius: BorderRadius.all(
          Radius.circular(10.0)
         ),
        ),
        alignment: Alignment.center,
        child: Icon(
         Icons.camera_rear_rounded,
         size: 38.0,
         color: (_idCameras == 0) ? Colors.pink : Colors.grey,
        ),
       ),
      ),

      TextButton(
       onPressed: () { _funChoiceCameras(1); },
       child: Container(
        width: 75.0,
        height: 50.0,
        decoration: BoxDecoration(
         border: Border.all(
          width: 2.0,
          color: (_idCameras == 1) ? Colors.pink : Colors.grey,
         ),
         borderRadius: BorderRadius.all(
          Radius.circular(10.0)
         ),
        ),
        alignment: Alignment.center,
        child: Icon(
         Icons.camera_front_rounded,
         size: 38.0,
         color: (_idCameras == 1) ? Colors.pink : Colors.grey,
        ),
       ),
      ),
     ],
    ),
   ],
  );
 }

}

введите сюда описание изображения


Ответы (0 шт):