Fluttery Framework

codecov CI Pub.dev GitHub stars Last Commit Chat

A Framework for Flutter's Framework

Fluttery_Framework Allows for faster and easier development with better maintainability. It looks like Flutter because it works like Flutter. There's no 're-inventing of the wheel' here. No more of a learning curve. If you know Flutter, you'll know Fluttery.

It supplies the adaptive functions and features expected of a production-ready app:

  • An extended version of the State class using Flutter's own intuitive State Management
  • A State Object Controller class for this new State class
  • Built-in responsive interface capability utilizing the package, Sizer
  • Essential error handling capabilities
  • Easy implementation of both the Material & Cupertino interface for one app
  • App-wide accessibility to system preferences
  • Built-in app notifications
  • A better menu bar
  • 27 device event-handlers
  • A loading screen option
  • An array of dialog windows
  • A customizable bottom bar

Fluttery Framework Documentation

Fluttery Framework

Free overview article on medium.com:

Fluttery Framework

As great as Flutter is, you will not create a ‘production-worthy’ app using Flutter right out of the box. When building a Flutter app, it’s expected to be one codebase that runs on an Android phone, an iOS phone, on Windows, on Linux, and or on the Web---and to do so seamlessly. It is to display the appropriate design interface (Material or Cupertino) depending on the platform it’s running on, it is to have a responsive interface that displays its information correctly no matter the screen size of the device or platform, and it is to fail gracefully if and when it encounters an error. Flutter right out of the box does not have these capabilities. Until now.

When I first started working with Flutter, I began keeping modular bits of code from past projects that generally accelerated the development process. I would use these again and again in future apps---building up a toolkit as we developers often do. Libraries of tried and tested bits of software that I can later put together to reliably supply a particular function or feature. Over time, I turned to the Flutter community for such libraries, and again, if I didn’t find one I liked, I wrote my own:

The Fluttery Framework uses packages, functions, and features, you will likely need in your own apps. It's a collection of software that's proven to be effective solutions to those capabilities required time and time again by a typical real-world app. It’s an amalgamation of what's great about Flutter and what the Flutter community has contributed over the last few years. For example, if you know GetX and its many extensions, you’ll know Fluttery’s extensions as well. Jonny Borges, the author of GetX, did a great job providing these extensions! They’ve proven to be indispensable when writing a production-ready app. As for GetX itself, it never became my chosen approach, but I did like his extensions, and so I took them to be used in the Fluttery…accompanied by Jonny’s MIT license of course.

The extensions alone are reason enough to use this package frankly:

  • extensions_view.dart
  • context_extensions.dart
  • double_extensions.dart
  • duration_extensions.dart
  • dynamic_extensions.dart
  • gorouter_extension.dart
  • num_extensions.dart
  • string_extensions.dart
  • widget_extensions.dart

As the years went by, I found packages that made my life easier and so they too were incorporated into Fluttery Framework:

I was careful to choose only packages that fulfill the general requirements of a typical app. I didn’t choose those too specific and only suitable for a particular problem domain. This is a framework after all. It’s to serve as a ‘general framework’ for all my apps no matter how diverse each is. Of course, for your specific app with its specific needs, you then will add additional packages or write your own. You supply the specific code; the Fluttery Framework supplies the rest.

Such a framework is to offer a structured approach to making a production-worthy app. For we Flutter developers in particular, a ready means to access a State object’s setState() function is of interest. With that, Fluttery own unique contribution to this package is the concept of a ‘State Object Controller.’ The use of controllers are nothing new to Flutter. It uses controllers in a number of its widgets. I realized that having a controller object working with a State object would only enhance the development process. It would encourage a separation of an app’s interface from its event handling and business rules promoting a clean architecture.

The Fluttery Framework is a culmination of sound Dart and Flutter packages from the Flutter community. Unlike other options out there, it works with Flutter not on top of it as a separate approach.