Last updated:
0 purchases
i spy
Visionary Software Solutions iSpy: OBSERVER, MEDIATOR, and Eventing Done Right. #
Implementation of OBSERVER and MEDIATOR made after witnessing the
debacle of Flutter's InheritedWidget and "Provider" packages and deciding
"NOPE, DON'T WANT IT."
(Aside: It's literally shameful to me that so many new frameworks
are being written by professionals that don't clearly and explicitly include such
well-known concepts using the UBIQUITOUS LANGUAGE (Eric Evans Domain Driven Design)
of Patterns to simplify themselves conceptually and promote greater understanding and
professionalism in the field of software engineering.)
MVC and MVVM are classic and reliable architectural patterns for solid UIs.
It's a shame that modern frameworks are encouraging newbies to programming
to go away from them in favor of complicated specific abstractions that
introduce tight coupling and make them think in framework specific
ways as opposed to seeing the generalized patterns, to me a clear sign
of VENDOR LOCK-IN and WOLF TICKET Anti-Patterns.
Features #
Provides ready to use implementations of OBSERVER and MEDIATOR for OBSERVER
Immutable and Mutable options
Enables MVC/MVVM style architectures with loose coupling
Uses Generics for situations where users may want to leverage the compiler and only be interested in specific events/
Offers simple implementations of DOMAIN EVENTS
Building block pieces in place to build an Audit Log, the corner stone of the cornerstone of real time data processing
Getting started #
No dependencies, pure Dart!
It should work in any Dart 3+ runtime environment.
Usage #
Check out the demos in example/i_spy_example.dart and the unit test test/i_spy_test.dart.
Here's a teaser #
/// Basic demonstration of how OBSERVER and MEDIATOR enable decoupling between
/// two components. [Pinger] and [Ponger] don't know about each other.
final ping = Pinger();
final pong = Ponger();
final scribe = Scribe();
/// nor do they know that there's a [Scribe] jotting down what happens.
/// This loose coupling is a boon in many UI contexts.
ping.ping();
pong.pong();
scribe.update(Finished());
copied to clipboard
Additional information #
This package is Free and Open Source Software by Visionary Software Solutions.
Alternative licensing is available, on a sliding scale case-by-case basis.
(Contact nico at visionary.software)
Repo: https://bitbucket.org/visionary-software/i_spy
Jira: https://bitbucket.org/visionary-software/i_spy/jira?site=8558cf93-d5dd-4d50-b3cd-6ce38db332e9&statuses=new&statuses=indeterminate&sort=-updated&page=1
License: GPLv3
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.