mobxjs / mobx.dart

MobX for the Dart language. Hassle-free, reactive state-management for your Dart and Flutter apps.
https://mobx.netlify.app
MIT License
2.4k stars 310 forks source link

MobX Generator - Simplify writing store code (Realm dart example) #890

Open mohachouch opened 1 year ago

mohachouch commented 1 year ago

Hello, Thanks for your work.

Writing a store is too verbose. The Realm team generates the class this way. Is it possible to take inspiration from what they have done?

From

class Counter = CounterBase with _$Counter;

abstract class CounterBase with Store {
}

To

class _Counter with Store {
}

After the generator create this :

class Counter extends _Counter {
}

Here is the sample realm repository https://github.com/realm/realm-dart/tree/main/example/bin

Thanks

mohachouch commented 1 year ago

@amondnet what do you think, about this ?

s0nerik commented 1 year ago

Let's consider the code navigation in IDE as well. Currently, in order to make IDE navigate to our own code for the state store, and not the generated one, we always use the generated store cast to the original (non-generated) type.

The author's example makes the _Counter private so that the generated Counter is the type to be used.

I'd prefer to have the ability to specify a non-private abstract class as a base type for state store generation. Something like this:

abstract class Counter with Store {
}

and its generated counterpart:

class CounterStore extends Counter {
}

This way, I'd be able to create a Counter using the CounterStore() constructor but expose it using the original Counter type and have proper code navigation in the IDE.