NESSoftware

Flutter

Flutter is an open-source software development toolkit developed by Google for building applications from a single codebase.
It lets developers create apps for Android, iOS, macOS, Windows, and Linux (cross-platform).

Established Flutter development

NESSoftware has been developing cross-platform Flutter applications with software companies in the EU for several years.

During this work, we developed and refined reusable building blocks and architectural patterns across multiple applications.

These components were previously maintained within individual projects and have now been extracted into reusable Flutter packages.

The common Flutter packages

  • result_utils – A type-safe FutureResult approach for representing successful and failed operations and for handling errors consistently.
  • dialog_utils – Reusable Flutter dialogs for errors, success messages, confirmations, information, and waiting for asynchronous operations.
  • chopper_utils – Common infrastructure for Chopper/OpenAPI clients, including request headers, authentication, coordinated access-token refresh, and handling of concurrent 401 responses.

The packages are designed to work together as part of a consistent Flutter application architecture, from the networking layer through result handling to user-interface feedback.

Although the packages are newly published and have low version numbers, their underlying code and concepts have been used in production for several years.

For a detailed explanation of the FutureResult approach and its error-handling design, see FutureResult in Flutter: Explicit Control Flow and Practical Error Handling.

The Flutter networking architecture

The packages are described and demonstrated in detail in the article The Unified Flutter Networking Framework: Chopper, OpenAPI, and Safe UI Bridges.

The article shows how the components can be combined into a complete request-to-UI flow, including authenticated OpenAPI requests, coordinated token refresh, FutureResult error handling, FutureBuilder, and the futureToResult() bridge for imperative user actions.

AI development rules for Flutter

There is also a dedicated set of development rules for AI-assisted Flutter development. These rules describe how AI coding assistants should work with the established Flutter architecture, existing application code, and the common packages.

The rules require AI assistants to reuse existing project functionality, use result_utils and dialog_utils where applicable, follow existing code patterns instead of introducing alternative implementations, and follow the existing FutureResult error-handling pattern for service-layer operations. They also require the actual existing implementation and control flow to be understood before proposing bugs, refactorings, or other changes.

Note: Although these rules are tailored to specific Flutter projects, they also illustrate a broader principle of AI-assisted software development: clear, explicit rules and boundaries help AI assistants understand the project context, preserve existing architecture, avoid inappropriate changes, and handle sensitive operations responsibly. Other projects can use these rules as a template and adapt them to their own technologies, workflows, data-protection requirements, and risk profiles.