{"id":13554728,"url":"https://github.com/devonfw-forge/devon4flutter-non-bloc-arch","last_synced_at":"2025-04-03T07:32:41.172Z","repository":{"id":36344473,"uuid":"222711979","full_name":"devonfw-forge/devon4flutter-non-bloc-arch","owner":"devonfw-forge","description":" A guide aiming to bridge the gap between the absolute Flutter basics and clean, structured Flutter Development","archived":false,"fork":false,"pushed_at":"2023-07-11T15:36:16.000Z","size":23754,"stargazers_count":307,"open_issues_count":6,"forks_count":37,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-05-19T01:53:23.086Z","etag":null,"topics":["architecture","architecture-patterns","best-practices","bloc","bloc-pattern","conventions","flutter","guide","state-management"],"latest_commit_sha":null,"homepage":"https://github.com/devonfw-forge/devonfw4flutter/wiki","language":"TeX","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/devonfw-forge.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}},"created_at":"2019-11-19T14:13:45.000Z","updated_at":"2024-04-29T08:43:12.000Z","dependencies_parsed_at":"2022-09-06T03:50:33.689Z","dependency_job_id":"1631c13e-f096-495f-a39c-fb60f1577b0a","html_url":"https://github.com/devonfw-forge/devon4flutter-non-bloc-arch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devonfw-forge%2Fdevon4flutter-non-bloc-arch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devonfw-forge%2Fdevon4flutter-non-bloc-arch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devonfw-forge%2Fdevon4flutter-non-bloc-arch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devonfw-forge%2Fdevon4flutter-non-bloc-arch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devonfw-forge","download_url":"https://codeload.github.com/devonfw-forge/devon4flutter-non-bloc-arch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222865635,"owners_count":17049605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["architecture","architecture-patterns","best-practices","bloc","bloc-pattern","conventions","flutter","guide","state-management"],"created_at":"2024-08-01T12:02:53.755Z","updated_at":"2024-11-04T03:31:14.399Z","avatar_url":"https://github.com/devonfw-forge.png","language":"TeX","funding_links":[],"categories":["TeX"],"sub_categories":[],"readme":"![Banner](https://github.com/devonfw-forge/devonfw4flutter/wiki//images/banner.png)\n\n\u003e The guide is published in the [Wiki of this repository](https://github.com/devonfw-forge/devonfw4flutter/wiki). This repository just holds a copy of the Wiki to make the commit history more readable. The _README.md_ is a copy of the [introduction chapter](https://github.com/devonfw-forge/devonfw4flutter/wiki).\n\n# Introduction\nPage Table of Contents\n- [Introduction](#introduction)\n  - [The Goal of this Guide](#the-goal-of-this-guide)\n  - [Who is this Guide for?](#who-is-this-guide-for)\n  - [Topics that will be Covered](#topics-that-will-be-covered)\n  - [Creation Context](#creation-context)\n  - [Structure](#structure)\n  - [My Sources](#my-sources)\n  - [Creation Process](#creation-process)\n\n## The Goal of this Guide\n\nThis guide aims to bridge the gap between the absolute Flutter [\\[1\\]](https://flutter.dev/) basics and clean, structured Flutter development. It should bring you from the basics of knowing how to build an app with Flutter to an understanding of how to do it *properly*. Or at least show you one possible way to make large scale Flutter projects clean and manageable.\n\n## Who is this Guide for?\n\nFor people with a basic knowledge of the Flutter Framework. I recommend following this tutorial by the Flutter team [\\[2\\]](https://flutter.dev/docs/get-started/codelab). It will walk you through developing your first Flutter application. You should also have a basic understanding of the Dart programming language [\\[3\\]](https://dart.dev/). No worries, it is very similar to Java [\\[4\\]](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), Kotlin [\\[5\\]](https://kotlinlang.org/) and JavaScript [\\[6\\]](https://www.ecma-international.org/publications/standards/Ecma-262.htm). So if you know 1 or 2 of those languages you should be fine.\n\n## Topics that will be Covered\n\n- A brief introduction to the [Flutter Framework](https://github.com/devonfw-forge/devonfw4flutter/wiki/100-The-Flutter-Framework) in general:\n    - How the [underlying technology](https://github.com/devonfw-forge/devonfw4flutter/wiki/110-Under-the-Hood) works,\n    - how it’s [programming style](https://github.com/devonfw-forge/devonfw4flutter/wiki/120-Thinking-Declaratively) is little different from other frameworks,\n    - how Flutter apps are [structured](https://github.com/devonfw-forge/devonfw4flutter/wiki/130-The-Widget-Tree) on an abstract level and,\n    - how [asynchrony](https://github.com/devonfw-forge/devonfw4flutter/wiki/140-Asynchronous-Flutter) and communication with the web can be implemented.\n- A showcase of possible [architectural styles](https://github.com/devonfw-forge/devonfw4flutter/wiki/210-State-Management-Alternatives) you can use to build your app and\n    - an [in-depth guide](https://github.com/devonfw-forge/devonfw4flutter/wiki/220-BLoC) on one of those possibilities (BLoC Pattern [\\[7\\]](https://www.youtube.com/watch?v=PLHln7wHgPE)).\n- How to [test](https://github.com/devonfw-forge/devonfw4flutter/wiki/300-Testing) your app.\n- Some [conventions and best practices](https://github.com/devonfw-forge/devonfw4flutter/wiki/400-Conventions) for Dart, and the Flutter Framework in general.\n- My personal [evaluation of the framework](https://github.com/devonfw-forge/devonfw4flutter/wiki/500-Conclusion).\n\n## Creation Context\n\nThis guide was written by a student in the Bachelor of Science Program “Computer Science and Media Technology” at Technical University Cologne [\\[8\\]](https://www.th-koeln.de/en/homepage_26.php), and it was created for one of the modules in that Bachelor. In addition to this, the guide was written in collaboration with DevonFw [\\[9\\]](https://devonfw.com/index.html). DevonFw released a guide on building an application with Angular [\\[10\\]](https://github.com/devonfw/devon4ng) in May of 2019, this guide is meant to be the Flutter version of that.\n\n## Structure\n\nThe guide is designed to be read in order, from chapter 0 (this one) to chapter 5. Code examples throughout the chapters will mainly be taken from Wisgen [\\[11\\]](https://github.com/Fasust/wisgen), an example Flutter application that was specifically built for the purposes of this guide. If you want to search for any specific terms in the guide, you can use [this page](https://github.com/devonfw-forge/devonfw4flutter/wiki/gfm-guide). It is all chapters of the guide combined into one page. There is going to be a few common symbols throughout the guide, this is what they stand for:\n\n| Symbol | Meaning                  |\n| :----: | :----------------------- |\n|   📙    | Definition               |\n|   🕐    | Shortened version (TLDR) |\n|   ⚠    | Important                |\n\n## My Sources\n\nI am basing this guide on a combination of conference talks, blog articles by respected Flutter developers, the official documentation, scientific papers that cover cross-platform mobile development in general and many other sources. All sources used in the guide are listed in chapter [*6 References*](https://github.com/devonfw-forge/devonfw4flutter/wiki/600-References). To put that theoretical knowledge into practice, I built the Wisgen application [\\[11\\]](https://github.com/Fasust/wisgen) using the Flutter Framework, the BLoC Pattern [\\[7\\]](https://www.youtube.com/watch?v=PLHln7wHgPE), and a four-layered architecture.\n\n## Creation Process\n\nIf you are interested in how this guide was created, how Wisgen was built, how a bridge between a citation software and Markdown was realized, or any other details about the creation process, check out the [Meta-Documentation](https://github.com/devonfw-forge/devonfw4flutter/blob/master/Meta-Documentation.pdf).\n\n\u003cp align=\"right\"\u003e\u003ca href=\"https://github.com/devonfw-forge/devonfw4flutter/wiki/100-The-Flutter-Framework\"\u003eNext Chapter: The Flutter Framework \u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003ca href=\"#\"\u003eBack to Top\u003c/a\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevonfw-forge%2Fdevon4flutter-non-bloc-arch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevonfw-forge%2Fdevon4flutter-non-bloc-arch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevonfw-forge%2Fdevon4flutter-non-bloc-arch/lists"}