{"action":"created","issue":{"url":"https://api.github.com/repos/flutter/flutter/issues/2723","repository_url":"https://api.github.com/repos/flutter/flutter","labels_url":"https://api.github.com/repos/flutter/flutter/issues/2723/labels{/name}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/2723/comments","events_url":"https://api.github.com/repos/flutter/flutter/issues/2723/events","html_url":"https://github.com/flutter/flutter/issues/2723","id":141124556,"number":2723,"title":"Support for running manual layout passes","user":{"login":"krisgiesing","id":13855787,"avatar_url":"https://avatars.githubusercontent.com/u/13855787?v=3","gravatar_id":"","url":"https://api.github.com/users/krisgiesing","html_url":"https://github.com/krisgiesing","followers_url":"https://api.github.com/users/krisgiesing/followers","following_url":"https://api.github.com/users/krisgiesing/following{/other_user}","gists_url":"https://api.github.com/users/krisgiesing/gists{/gist_id}","starred_url":"https://api.github.com/users/krisgiesing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krisgiesing/subscriptions","organizations_url":"https://api.github.com/users/krisgiesing/orgs","repos_url":"https://api.github.com/users/krisgiesing/repos","events_url":"https://api.github.com/users/krisgiesing/events{/privacy}","received_events_url":"https://api.github.com/users/krisgiesing/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"krisgiesing","id":13855787,"avatar_url":"https://avatars.githubusercontent.com/u/13855787?v=3","gravatar_id":"","url":"https://api.github.com/users/krisgiesing","html_url":"https://github.com/krisgiesing","followers_url":"https://api.github.com/users/krisgiesing/followers","following_url":"https://api.github.com/users/krisgiesing/following{/other_user}","gists_url":"https://api.github.com/users/krisgiesing/gists{/gist_id}","starred_url":"https://api.github.com/users/krisgiesing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krisgiesing/subscriptions","organizations_url":"https://api.github.com/users/krisgiesing/orgs","repos_url":"https://api.github.com/users/krisgiesing/repos","events_url":"https://api.github.com/users/krisgiesing/events{/privacy}","received_events_url":"https://api.github.com/users/krisgiesing/received_events","type":"User","site_admin":false},"milestone":null,"comments":6,"created_at":"2016-03-15T23:09:46Z","updated_at":"2016-03-22T20:58:22Z","closed_at":null,"body":"There are now (at least) two experimental efforts going on that depend on analyzing the results of a layout pass. Currently the most straightforward way to do this is to run the whole rendering pipeline and then look at the results afterwards. This means pushing pixels to the screen.\r\n\r\nIt would be more efficient if we had a way to run the layout pass manually, perhaps by using some kind of offscreen context to prevent screen artifacts. If the layout pass is expensive we might also want to run it asynchronously, although that is a somewhat lesser requirement.\r\n\r\nThis request doesn't necessarily mean adding more public API to support this use case; if there is a recipe for doing this using the current APIs (e.g. by creating a custom WidgetFlutterBinding), that could be sufficient, even if the process is complex or cumbersome."},"comment":{"url":"https://api.github.com/repos/flutter/flutter/issues/comments/200022387","html_url":"https://github.com/flutter/flutter/issues/2723#issuecomment-200022387","issue_url":"https://api.github.com/repos/flutter/flutter/issues/2723","id":200022387,"user":{"login":"abarth","id":112007,"avatar_url":"https://avatars.githubusercontent.com/u/112007?v=3","gravatar_id":"","url":"https://api.github.com/users/abarth","html_url":"https://github.com/abarth","followers_url":"https://api.github.com/users/abarth/followers","following_url":"https://api.github.com/users/abarth/following{/other_user}","gists_url":"https://api.github.com/users/abarth/gists{/gist_id}","starred_url":"https://api.github.com/users/abarth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abarth/subscriptions","organizations_url":"https://api.github.com/users/abarth/orgs","repos_url":"https://api.github.com/users/abarth/repos","events_url":"https://api.github.com/users/abarth/events{/privacy}","received_events_url":"https://api.github.com/users/abarth/received_events","type":"User","site_admin":false},"created_at":"2016-03-22T20:58:22Z","updated_at":"2016-03-22T20:58:22Z","body":"That assert is meant to be just a rough \"is this sane\" check.  Maybe we should have a debug bool for whether we're doing layout anywhere in the system?"}}