THETA X 概念 7
在 startCapture 命令运行后,相机的状态为“进行中”,直到用户运行 stopCapture 命令。
概念
当用户启动视频时,process id 会从 commands/execute 中解析出来。该 id 会被传入应用程序的状态,并作为 commands/status 的参数。commands/status 会输出视频命令的状态:inProgress(进行中)或 done(完成)。
进行中
当相机正在拍摄视频时,进程的状态是 inProgress。stopCapture 命令运行后,相机将视频拼接在一起。即使停止了视频,进程仍然是 inProgress。一旦视频完成拼接,进程就是 done。虽然视频可能只有三秒钟,但拼接过程可能需要五秒钟才能完成。
API 功能
步骤
- 使用
commands/execute开始捕捉。 - 从响应中解析出 id
var convertResponse = jsonDecode(response.bodyString);
var id = convertResponse['id'];
- 将进程 id 传入应用程序状态,也传入
commands/status。通过特定的 id,commands/status应该能够发出视频进程的状态。 commands/status在一个 while 循环中添加到commands/execute,直到视频进程的状态变为 done。每次调用之间的延迟可以防止应用程序崩溃。
- 相机完成处理后,将状态显示在屏幕上。
Text('State: ${state.cameraStatus}')
响应窗口
stopCapture 命令会输出最后一个视频的文件 url。这个文件 url 会被传入应用程序的状态,并显示为一张图片。
state.fileUrl.isNotEmpty && state.cameraStatus == 'done'
? SizedBox(
width: 300,
child: Image.network(
'${state.fileUrl}?type=thumb',))

