gpt4 book ai didi

flutter - 如何在 dart 代码中执行 flutter 终端命令

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

我想为我的项目自动化测试。我需要截图并与其他截图进行比较。 Flutter 命令将截取屏幕截图并将其保存到我的目录中。所以我想在 dart 而不是终端中执行该命令。

我在截图时遇到问题已经使用了一些包,如截图等。将无法正常工作。

PS D:\flut-237-screenshot\flutter-charts\flutter_charts\flutter_charts_testbed> flutter 截图屏幕截图写入 flutter_02.png (2797kB)。

我希望这个命令应该使用 dart 代码而不是在终端中运行

最佳答案

Dart 的 io 包有 Process.run 命令,允许您从 Dart 运行终端命令:

Process.run

在您为应用截屏的情况下,您会执行以下操作:

import 'dart:io';

await Process.run('flutter', ['screenshot', '-o', 'image.jpg']);

如果您想更直接地通过设置集成测试来生成屏幕截图,这比通过终端命令调用 flutter screenshot 快得多,这里有一些有用的引用资料解释了如何拍摄应用程序快照通过 Flutter 的集成测试框架:

https://medium.com/flutter-community/testing-flutter-ui-with-flutter-driver-c1583681e337

https://blog.codemagic.io/flutter-automated-screenshot-testing/

https://dev.to/mjablecnik/take-screenshot-during-flutter-integration-tests-435k

https://medium.com/@nocnoc/automated-screenshots-for-flutter-f78be70cd5fd

但是,以这种方式截取屏幕截图的限制是,只会捕获应用程序的 UI,不会捕获应用程序之外的任何其他内容(例如本地和推送通知、基于操作系统时钟的提醒警报、日历等,您的应用可能会生成。)

另一方面,使用 Process.run 执行 flutter screenshot 将能够捕获手机显示屏上的所有内容,包括通知、基于系统的警报等. 但是,获得正确的时间可能有点棘手,因为终端命令需要更长的时间才能完全捕获并保存屏幕截图。您仍然希望在集成测试驱动程序的上下文中执行此操作,以避免系统权限问题。

关于flutter - 如何在 dart 代码中执行 flutter 终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58035541/

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