{"action":"created","issue":{"url":"https://api.github.com/repos/flutter/flutter/issues/1129","labels_url":"https://api.github.com/repos/flutter/flutter/issues/1129/labels{/name}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/1129/comments","events_url":"https://api.github.com/repos/flutter/flutter/issues/1129/events","html_url":"https://github.com/flutter/flutter/issues/1129","id":125549556,"number":1129,"title":"Introduce \"gui\" library as a layer between widget and material","user":{"login":"Hixie","id":551196,"avatar_url":"https://avatars.githubusercontent.com/u/551196?v=3","gravatar_id":"","url":"https://api.github.com/users/Hixie","html_url":"https://github.com/Hixie","followers_url":"https://api.github.com/users/Hixie/followers","following_url":"https://api.github.com/users/Hixie/following{/other_user}","gists_url":"https://api.github.com/users/Hixie/gists{/gist_id}","starred_url":"https://api.github.com/users/Hixie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hixie/subscriptions","organizations_url":"https://api.github.com/users/Hixie/orgs","repos_url":"https://api.github.com/users/Hixie/repos","events_url":"https://api.github.com/users/Hixie/events{/privacy}","received_events_url":"https://api.github.com/users/Hixie/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/flutter/flutter/labels/affects:%20dev%20experience","name":"affects: dev experience","color":"009800"},{"url":"https://api.github.com/repos/flutter/flutter/labels/affects:%20framework","name":"affects: framework","color":"207de5"},{"url":"https://api.github.com/repos/flutter/flutter/labels/affects:%20material%20design","name":"affects: material design","color":"E91E63"},{"url":"https://api.github.com/repos/flutter/flutter/labels/customer:%20game","name":"customer: game","color":"bfdadc"},{"url":"https://api.github.com/repos/flutter/flutter/labels/%E2%9A%A0%20brand%20new%20feature","name":"⚠ brand new feature","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/flutter/flutter/milestones/1","html_url":"https://github.com/flutter/flutter/milestones/Blue%20Sky","labels_url":"https://api.github.com/repos/flutter/flutter/milestones/1/labels","id":1402982,"number":1,"title":"Blue Sky","description":"Support everything that's needed to make solid cross-platform mobile apps.\r\n- Internationalisation\r\n- Accessibility\r\n- Performance\r\n- Security\r\n- Comprehensive widget feature set\r\n- Localisation","creator":{"login":"FlutterIssues","id":15744020,"avatar_url":"https://avatars.githubusercontent.com/u/15744020?v=3","gravatar_id":"","url":"https://api.github.com/users/FlutterIssues","html_url":"https://github.com/FlutterIssues","followers_url":"https://api.github.com/users/FlutterIssues/followers","following_url":"https://api.github.com/users/FlutterIssues/following{/other_user}","gists_url":"https://api.github.com/users/FlutterIssues/gists{/gist_id}","starred_url":"https://api.github.com/users/FlutterIssues/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FlutterIssues/subscriptions","organizations_url":"https://api.github.com/users/FlutterIssues/orgs","repos_url":"https://api.github.com/users/FlutterIssues/repos","events_url":"https://api.github.com/users/FlutterIssues/events{/privacy}","received_events_url":"https://api.github.com/users/FlutterIssues/received_events","type":"User","site_admin":false},"open_issues":292,"closed_issues":94,"state":"open","created_at":"2015-11-09T20:19:58Z","updated_at":"2016-01-08T06:17:33Z","due_on":null,"closed_at":null},"comments":4,"created_at":"2016-01-08T06:09:01Z","updated_at":"2016-01-08T07:13:59Z","closed_at":null,"body":"I think we should introduce a layer between \"widget\" and \"material\", probably named \"gui\", that introduces the opinion that there are [certain common widget types](https://en.wikipedia.org/wiki/Widget_(GUI)#List_of_common_generic_widgets), and defines abstract interfaces for each one (e.g. an abstract \"GUIButton\" type that has an onPressed handler), and that stores UI-agnostic logic (e.g. the TabBarSelection class), but that doesn't actually introduce opinion about what the widgets should look like. Then, \"material\" would inherit from those where it makes sense.\r\n\r\nThis would make it much easier to introduce new widget sets, as used for example by the game."},"comment":{"url":"https://api.github.com/repos/flutter/flutter/issues/comments/169914421","html_url":"https://github.com/flutter/flutter/issues/1129#issuecomment-169914421","issue_url":"https://api.github.com/repos/flutter/flutter/issues/1129","id":169914421,"user":{"login":"Hixie","id":551196,"avatar_url":"https://avatars.githubusercontent.com/u/551196?v=3","gravatar_id":"","url":"https://api.github.com/users/Hixie","html_url":"https://github.com/Hixie","followers_url":"https://api.github.com/users/Hixie/followers","following_url":"https://api.github.com/users/Hixie/following{/other_user}","gists_url":"https://api.github.com/users/Hixie/gists{/gist_id}","starred_url":"https://api.github.com/users/Hixie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hixie/subscriptions","organizations_url":"https://api.github.com/users/Hixie/orgs","repos_url":"https://api.github.com/users/Hixie/repos","events_url":"https://api.github.com/users/Hixie/events{/privacy}","received_events_url":"https://api.github.com/users/Hixie/received_events","type":"User","site_admin":false},"created_at":"2016-01-08T07:13:59Z","updated_at":"2016-01-08T07:13:59Z","body":"Yeah, good question."}}