🙄

widgetを画像として保存しようとしたらエラー

2023/02/02に公開

ドキュメント兼サンプルコード

Unhandled Exception: 'package:flutter/src/rendering/proxy_box.dart': Failed assertion: line 3158 pos 12: '!debugNeedsPaint': is not true.

エラーの解消法の結論

boundary変数から取得できるdebugNeedsPaintがtrueだったため。これをfalseになるようにしたらいけた。
もう少し具体的な修正のやり方を修正すると、画像として保存したいwidgetが描画中にtoImageメソッドが実行されるとエラーがスローされるので、そうならないために1秒待つようにしたら解決した。
1秒待つことによって、画面の再描画が終わるからである。

原因

上記ドキュメントから抜粋

To use toImage, the render object must have gone through the paint phase (i.e. debugNeedsPaint must be false).
toImage を使用するには、レンダー オブジェクトがペイント フェーズを通過している必要があります (つまり、debugNeedsPaint が false である必要があります)。

その他参考記事

https://stackoverflow.com/questions/57645037/unable-to-take-screenshot-in-flutter

Discussion