首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤动相机预览不随手机方向旋转

颤动相机预览不随手机方向旋转
EN

Stack Overflow用户
提问于 2018-06-01 06:21:05
回答 5查看 9.1K关注 0票数 13

我是Dart/Flutter的新手,目前正在使用Flutter Camera Plugin,但当手机转到横向模式时,我遇到了CameraPreview的问题。图像保持垂直,不会随着手机旋转90度。

我尝试了无数的方法,包括Transform.rotate(),但我似乎无法将图像同时显示在屏幕上并旋转90度。

当我使用_cameraPreviewWidget查看手机时拍摄的照片时,它们仍然保存在正确的方向上。

Normal

Landscape

EN

Stack Overflow用户

发布于 2021-11-13 06:48:22

代码语言:javascript
运行
复制
class _VideoPlayerWidgetState extends State<VideoPlayerWidget> {
  VideoPlayerController _videoPlayerController;
  ChewieController _chewieController;

  @override
  void initState() {
    super.initState();
    initializePlayer();
  }

  Future<void> initializePlayer() async {
// widget.url put url video file path
    _videoPlayerController =
        _videoPlayerController = VideoPlayerController.network(widget.url);
    await Future.wait([_videoPlayerController.initialize()]);
    _chewieController = ChewieController(
      videoPlayerController: _videoPlayerController,
      autoPlay: true,
      looping: true,
    );
  }

  bool useSensor = true;
  bool portrait;

 
  @override
  Widget build(BuildContext context) {
    return NativeDeviceOrientationReader(
      builder: (context) {
        NativeDeviceOrientation orientation =
            NativeDeviceOrientationReader.orientation(context);
        portrait = orientation == NativeDeviceOrientation.portraitUp;
        if(orientation == NativeDeviceOrientation.landscapeLeft){
          SystemChrome.setPreferredOrientations([
            !portrait
                ? DeviceOrientation.landscapeLeft
                : DeviceOrientation.portraitUp,
            !portrait
                ? DeviceOrientation.landscapeLeft
                : DeviceOrientation.portraitDown,
          ]);

        }else{
          SystemChrome.setPreferredOrientations([
            !portrait
                ? DeviceOrientation.landscapeRight
                : DeviceOrientation.portraitUp,
            !portrait
                ? DeviceOrientation.landscapeRight
                : DeviceOrientation.portraitDown,
          ]);
        }
        return _chewieController != null &&
                _chewieController.videoPlayerController.value.isInitialized
            ? Chewie(
                controller: _chewieController,
              )
            : Center(child: CircularProgressIndicator());
      },
      useSensor: useSensor,
    );
  }

  @override
  void dispose() {
    _videoPlayerController.dispose();
    _chewieController.dispose();
    SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
    super.dispose();
  }
}
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50633608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档