{"id":21372259,"url":"https://github.com/rxlabz/redarx_flutter_example","last_synced_at":"2026-05-01T18:32:28.289Z","repository":{"id":66351566,"uuid":"102094702","full_name":"rxlabz/redarx_flutter_example","owner":"rxlabz","description":"An example of Flutter Todo app using Redarx","archived":false,"fork":false,"pushed_at":"2017-09-06T13:32:14.000Z","size":118,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-18T23:26:00.759Z","etag":null,"topics":["dartlang","flutter","unidirectional-data-flow"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rxlabz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-01T09:00:42.000Z","updated_at":"2018-02-01T22:36:54.000Z","dependencies_parsed_at":"2023-02-27T00:00:33.491Z","dependency_job_id":null,"html_url":"https://github.com/rxlabz/redarx_flutter_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rxlabz/redarx_flutter_example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxlabz%2Fredarx_flutter_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxlabz%2Fredarx_flutter_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxlabz%2Fredarx_flutter_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxlabz%2Fredarx_flutter_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rxlabz","download_url":"https://codeload.github.com/rxlabz/redarx_flutter_example/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxlabz%2Fredarx_flutter_example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32508901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dartlang","flutter","unidirectional-data-flow"],"created_at":"2024-11-22T08:18:45.326Z","updated_at":"2026-05-01T18:32:28.268Z","avatar_url":"https://github.com/rxlabz.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# redarx_flutter_example\n\nSimple flutter todo app using [Redarx](https://github.com/rxlabz/redarx) for state management.\n\nUses [built_value](https://github.com/google/built_value.dart) \u0026 [built_collection](https://github.com/google/built_collection.dart) for immutable value types \u0026 models. \n\n## Usage\n\n```dart\nfinal requestMap = \u003cRequestType, CommandBuilder\u003e{\n  RequestType.LOAD_ALL: AsyncLoadAllCommand.constructor(DATA_PATH),\n  RequestType.ADD_TODO: AddTodoCommand.constructor(),\n  RequestType.UPDATE_TODO: UpdateTodoCommand.constructor(),\n  RequestType.CLEAR_ARCHIVES: ClearArchivesCommand.constructor(),\n  RequestType.COMPLETE_ALL: CompleteAllCommand.constructor(),\n  RequestType.TOGGLE_SHOW_COMPLETED: ToggleShowArchivesCommand.constructor()\n};\n\nvoid main() {\n  runApp(new StoreProvider(requestMap: requestMap, child:new TodoApp()));\n}\n``` \n\nThe dispatch method and the model are available from the StoreProvider ( an InheritedWidget )\n\n```dart\nclass _TodoScreenState extends State\u003cTodoScreen\u003e {\n// ...\n  \nDispatchFn get dispatch =\u003e StoreProvider.of(context).dispatch;\n\n// ...\n\n@override\nvoid didChangeDependencies() {\n  super.didChangeDependencies();\n\n  modelSub$ =\n    StoreProvider.of(context).model$.listen((TodoModel newModel) {\n      setState(() {\n      model = newModel;\n    });\n  });\n  _loadAll();\n}\n\n// ...\n\nwidget _buildActionMenu() =\u003e new PopupMenuButton\u003cMenuActions\u003e(\n        onSelected: ((MenuActions a) {\n          switch (a) {\n            case MenuActions.completeAll:\n              dispatch(new TodoRequest.completeAll());\n              break;\n            case MenuActions.clearAll:\n              dispatch(new TodoRequest.clearArchives());\n              break;\n          }\n        }),\n        itemBuilder: (BuildContext context) =\u003e [\n              new IconPopupMenuItem\u003cMenuActions\u003e(\n                label: 'Complete all (${model?.numRemaining})',\n                value: MenuActions.completeAll,\n                icon: Icons.done_all,\n              ),\n              new IconPopupMenuItem\u003cMenuActions\u003e(\n                label: 'Clear all (${model?.numCompleted})',\n                value: MenuActions.clearAll,\n                icon: Icons.clear_all,\n              ),\n            ],\n      );\n\n}\n```\n\n\n\n### Unstart Inherited widget\n\naka Model View Update\n\n- avoid direct injection : children can access to model$ ( todo \u0026 showCompleted property ) and dispatch method \n\n## Todo \n\n- [x] popup menu\n- [x] Built_value : immutable value type \u0026 Models\n- [x] InheritedWidget\n- [ ] Flutter Notif : could avoid view to know anything about StateManagement \n- [ ] firebase database\n- [ ] Built enum for Request ?\n- [ ] firebase auth\n- [ ] multiple store : AppStore(auth) + TodoStore =\u003e multiple request\n- [ ] widgets tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxlabz%2Fredarx_flutter_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frxlabz%2Fredarx_flutter_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxlabz%2Fredarx_flutter_example/lists"}