如何设置 Flutter CameraPreview 大小“全屏”

2024-06-23

我正在使用相机预览来测量物体的高度,但问题是我无法全屏设置相机预览高度。

我努力了定位小部件,它充满了屏幕,但图像被拉伸。 我努力了变换小部件,但高度没有填满全屏,出现空白。图像没有拉伸。

Mycode:

final size = MediaQuery.of(context).size;
final deviceRatio = size.width / size.height;

return Stack(
            children: <Widget>[
              Transform.scale(
                scale: controller.value.aspectRatio/deviceRatio,
                child: new AspectRatio(
                  aspectRatio: controller.value.aspectRatio,
                  child: new CameraPreview(controller),
                ),
              ),);

请帮助我在不拉伸图像的情况下调整相机预览“全屏”。


CameraValue.aspectRatio 返回宽度/高度而不是高度/宽度,因为0.7.0 https://pub.dev/packages/camera/changelog,CameraPreview 现在处理 AspectRatio 本身,所以我认为工作代码片段如下:

/// only work inside WidgetsApp or MaterialApp, which introduces a MediaQuery
final scale = 1 / (controller.value.aspectRatio * MediaQuery.of(context).size.aspectRatio);
return Transform.scale(
  scale: scale,
  alignment: Alignment.topCenter,
  child: CameraPreview(controller),
);

update:

通过变换缩放后,在用于预览时,预览可能会超出屏幕尺寸限制。过渡路线 https://api.flutter.dev/flutter/widgets/TransitionRoute-class.html。 (当托管在 CupertinoPageRoute 中时,拖动手势将清楚地显示这一点)。

所以我认为剪辑预览以使其完全匹配屏幕尺寸是个好主意。

final mediaSize = MediaQuery.of(context).size;
final scale = 1 / (controller.value.aspectRatio * mediaSize.aspectRatio);
return ClipRect(
  clipper: _MediaSizeClipper(mediaSize),
  child: Transform.scale(
    scale: scale,
    alignment: Alignment.topCenter,
    child: CameraPreview(controller),
  ),
);
class _MediaSizeClipper extends CustomClipper<Rect> {
  final Size mediaSize;
  const _MediaSizeClipper(this.mediaSize);
  @override
  Rect getClip(Size size) {
    return Rect.fromLTWH(0, 0, mediaSize.width, mediaSize.height);
  }
  @override
  bool shouldReclip(CustomClipper<Rect> oldClipper) {
    return true;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 Flutter CameraPreview 大小“全屏” 的相关文章

  • Android从VideoView获取视频源路径

    我有 VideoView 实例 我需要知道它的视频源路径 是否可以 有谁能够帮助我 我的 WebChromeClient 类代码是 Override public void onShowCustomView final View view
  • Android val 无法重新分配

    我定义了一个名为notes的变量 当我尝试从方法修改它时 android studio说 val 不能重新分配 但是 如果我像这样访问变量 我可以修改它 this notes class NoteAdapter var context Co
  • Android 显示自定义类型的联系人

    我已经导入了联系人列表的样本 形成此链接 http developer android com training contacts provider display contact badge html http developer and
  • 无法绑定到调试器的本地 XXXX

    我不断得到Can t bind to local XXXX for debugger控制台中的消息 但不适用于 1 个端口 适用于所有随机端口 我已经完成了中所述的操作这个问题 https stackoverflow com questio
  • ALBUM_ART列从API 29等开始被弃用,如何获取路径?

    我们目前正在使用以下方式获取专辑封面的路径 MediaStore Audio AlbumColumns ALBUM ART 并且正在成功获取路径 但 Pixel 3a Android 10 除外 经过一番研究 API 29 及以上版本已弃用
  • 将长文本分成页面供viewpager使用

    我正在实施中的messureText方法这个问题 https stackoverflow com a 22199847 3930169在 viewpager 中渲染之前将长文本分成指定大小的页面 我正在使用增量字符数进行 while 循环以
  • 如何在 Google Maps API V2 中获取我的当前位置

    我正在创建一个应用程序 用户需要使用 getMyLocation 查看他 她的地理位置 但这返回 null 有没有解决这个问题的方法 因为我确实读到 getMyLocation 方法总是返回 null 我是 Google 地图新手 因此我们
  • Android 如何知道手电筒是否打开

    我正在使用 CameraManager 和 CameraCharacteristics 我想知道如何检查手电筒是否打开 试试这段代码 public boolean FlashStatus Camera Parameters paramete
  • 在 Android 5.0 Lollipop 上以编程方式在视图上设置主题

    Android 5 0 Lollipop 添加了为不同视图 不仅仅是 Activity 设置主题的功能 android theme style MyAwesomeTheme 有没有办法动态设置视图的主题 安卓 主题 https develo
  • FloatingActionButton 不隐藏

    我试图隐藏我的 FloatingActionButtonfabLocation以编程方式 fabLocation setVisibility View GONE 但它不起作用 如果我添加android visibility gone 在我的
  • 我的应用程序中的 google+ 集成

    我是 Android 开发新手 正在创建一个带有 Google 集成的 Android 应用程序 我看到了一个教程并开始遵循它 但自教程以来 Google 已经更新了 Google 集成 例如 在本教程中您曾经单击 获取配置文件 按钮htt
  • CameraX:将照片捕获为位图

    我正在尝试使用护目镜CameraX示例应用程序 CameraXBasic 可以在 Github 上找到 并且希望将图像捕获为位图 以便能够在保存图像之前对图像进行一些修改 有人对如何实现这一目标有建议吗 请参阅下面的Google原始代码来捕
  • 无法按宽度包装任意行数的类似块引用的 TextView

    I need to render a quote block of arbitrary length The text must be aligned to the left while the block itself aligned t
  • 如何在改造中在主体内传递 JSON 数组

    intent sale redirect urls return url http example com your redirect url html cancel url http example com your cancel url
  • 如何从内存中清除动态创建的视图?

    我试图从记忆中清除一些观点 情况是这样的 我有一个活动 我将其称为 A 另一个称为 B 现在 我在 Activity A 中按下一个按钮 该按钮调用 Activity B 动态创建大量视图 之后 我按后退按钮返回到活动 A 多次重复这两个步
  • 使用 ExoPlayer 播放 YouTube 视频 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣使用外放播放器 http developer android com guide topics
  • 如何在 Android 键盘中包含建议

    我正在开发 Android 软键盘 我已经创建了键盘布局 但不知道如何包含在 EditText 中键入一些单词时出现的建议 例如 如果我写 在 中 已知 和 已知 将显示在建议中 所以我的问题是 1 如何在 Android 软键盘中包含建议
  • Android:Html 锚链接仅在 Web 视图中有效一次

    在使用锚链接加载 html 内容时 我在 webview 中遇到一些奇怪的问题 以下代码非常适合锚标记 但是只有一次 第二次当我按下锚标签时不工作 protected void onCreate Bundle savedInstanceSt
  • 解决SecurityException:权限拒绝:启动意图。我需要什么许可?

    我想从应用程序打开游戏商店 在三星手机上还好 但在一加手机上却失败了 我不知道在哪里alibaba来自 真奇怪 异常 java lang SecurityException 权限拒绝 启动意图 act android intent acti
  • DDMS 未显示来自设备的线程

    我想使用以下命令检查我的 Android 应用程序中是否存在内存泄漏DDMS特色于Eclipse 当我启动模拟设备时 线程会正确显示模拟设备 从 8600 及更高版本开始 然而 当我将 Droid 连接到 PC 时 该设备在 DDMS 中显

随机推荐

  • git,Heroku:预接收挂钩被拒绝

    我正在设置 git 存储库并尝试将其链接到 Heroku 当我运行命令时 git push heroku master 我收到 Counting objects 7 done Delta compression using up to 2
  • 如何在 Windows 窗体 C# 中将扩展 ASCII 转换为十进制?

    我正在编写一个Windows应用程序 我在转换时遇到问题扩展 ASCII 128 256 到其十进制等值 当我从 jar 文件中接收到扩展 ASCII 例如 时 它会像这样进入 C 应用程序 我可以知道如何将其转换为十进制等值 即 140
  • C# Linq 平均

    我有一个包含类似于以下数据的表 Group TimePoint Value 1 0 1 1 0 2 1 0 3 1 1 3 1 1 5 我想投影一个这样的表 Group TimePoint AverageValue 1 0 2 1 1 4
  • System.Net.NetworkInformation IPv4Mask 无法在 MonoTouch 中工作?

    我使用以下代码获取 iPhone 上当前可用的网络接口列表 foreach NetworkInterface l objNetworkInterface in NetworkInterface GetAllNetworkInterfaces
  • 使用 FragmentStatePagerAdapter 从 ViewPager 动态删除项目

    围绕这个话题有很多讨论 ViewPager PagerAdapter 不更新视图 https stackoverflow com a 7287121 494659 动态更新ViewPager https stackoverflow com
  • 缓存隐式解析

    为了减少项目的编译时间 我缓存了通过隐式查找解析的某些类型类 但这看起来有点麻烦 因为直接的实现不起作用 scala gt implicit val x String implicitly String x String null 隐式查找
  • SQL Server JOIN 缺少 NULL 值

    假设我有以下 2 张表 Table1 Table2 Col1 Col2 Col3 Col1 Col2 Col4 a b c a b d e
  • 如何删除其他目录中不存在的文件?

    我有两个目录 我们称它们为src and build 我的构建系统可以正常工作 因此对于所有具有更新时间的文件src比在build它从复制文件src to buid并进行一些转换 缩小 版本控制等 否则会跳过 因为文件被认为是最新的 然而
  • 在 python 中将 url 添加到 mysql 行

    我正在尝试使用 python 和 MySQLdb 库将 url 添加到 mysql 中的文本行 但是当我运行代码时 它说我的 sql 语法中有错误 你能告诉我我做错了什么吗 这是我的代码 import MySQLdb as mdb conn
  • 如何在 Safari 中调试嵌入式 JavaScript

    编辑 根据 dmi3y 的建议 更新了标题 将 内联 更改为 嵌入 以更好地反映问题的性质 在 Chrome 中 我通常通过在 JS 文件中设置断点来调试 JS 但是 Chrome 还允许您在存在内联 JS 的情况下使用实际文档执行此操作
  • 在 Windows 上使用 asprintf()

    我编写了一个在Linux上完美运行的C程序 但是当我在Windows上编译它时 它给我一个错误 说asprintf 未定义 它应该是 stdio 库的一部分 但似乎许多编译器不包含它 我可以在 Windows 上使用哪个编译器来使用 asp
  • 如何使用nix构建docker容器?

    我有一个 Nix 包 我想将其捆绑到 docker 容器中 具体来说 我想使用 Nix 作为更具表现力的替代方案Dockerfile拥有更快的 非线性 图像构建 我找到了有关的文档dockerTools buildImage https n
  • .NET 集合是一个结构体

    这是一个有趣的问题 是否有一个集合is net 框架中某处的结构 只是为了澄清 所有现有的集合 列表 数组等 都是引用类型 即使您将泛型参数设置为值类型 但我想知道是否有一种方法可以创建一个实际上是结构的集合 我显然不打算传递它 这会导致大
  • 关闭并打开“wifi和移动网络位置”后活动识别不起作用[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用活动识别来检测用户活动 我发现一个奇怪的行为 在我关闭并打开 WiFi 和移动网络位置 后 应用程序没有获得任何活动识别更新
  • 为什么我必须明确告诉 Spark 要缓存什么?

    在 Spark 中 每次我们对 RDD 执行任何操作时 都会重新计算 RDD 因此 如果我们知道 RDD 将被重用 我们应该显式地缓存 RDD 比方说 Spark 决定延迟缓存所有 RDD 并使用 LRU 自动将最相关的 RDD 保留在内存
  • 如何在fortran中调用和使用另一个子程序中的子程序?

    我正在编写一个程序 其中主程序包含许多子例程和函数 为了构造主程序的这些子程序之一 假设是子程序 A 我需要使用另一个子程序 假设是 B 我的问题是 如何调用子程序A并使用子程序B 我是初学者 我已经搜索了很多 但没有找到我清楚理解的东西
  • 为什么框架的自然高度不立即更新?

    我正在编写一个小部件来显示一些文本行 通过Label in a Frame 并且一旦文本高度大于包含内容的高度 就需要调整字体大小Frame 为此 我正在查询 winfo reqheight 为了Label和Frame文本更新后 想法是减少
  • 在 VB.NET 中调用过程的优缺点是什么?

    我想知道在VB NET中使用Call关键字和不使用Call调用程序的优缺点 Private Sub ProOne Code Are Here End Sub Private Sub Calling ProOne I would like t
  • 如何计算django中两个日期之间的差异

    我想计算当前日期和前一个日期之间的天数差异 我正在尝试这段代码 requiremntObj CustomerLeads objects all a datetime datetime now date for i in requiremnt
  • 如何设置 Flutter CameraPreview 大小“全屏”

    我正在使用相机预览来测量物体的高度 但问题是我无法全屏设置相机预览高度 我努力了定位小部件 它充满了屏幕 但图像被拉伸 我努力了变换小部件 但高度没有填满全屏 出现空白 图像没有拉伸 Mycode final size MediaQuery